5

我正在使用传单显示原始行程以前往一些标记。我用传单折线展示我的行程。但我希望能够

如何在传单中隐藏和显示折线?

我可以做这个 :

$('.leaflet-overlay-pane').hide();

$('.leaflet-overlay-pane').show();

但这会显示和隐藏我所有的折线。我希望能够分别隐藏和显示它们。

谢谢。

4

2 回答 2

10

如果您有对折线的引用

var polyline = L.polyline(...);

然后你可以使用

map.addLayer(polyline);//For show
map.removeLayer(polyline);// For hide

目前我认为没有只隐藏/显示的本地方法,也许在 0.7 版本中

其他解决方案是在维护者的旧评论中访问对象容器

I don't think there's an easy solution, for tile layers at least. :( I'll try to handle this sooner.
For vectors, you can change path._container.style.display, and for markers - marker._image.style.display and marker._shadow.style.display.
于 2013-10-17T11:28:05.907 回答
2

在地图上删除和添加对象也会改变图层的顺序(如果您的图例中有多个)。添加的对象将始终位于顶部而不是原始顺序。我使用 setLatLng (标记)和 setLatLngs (折线和多边形)来做一个快速的技巧而不改变顺序。只需将 latLngs 更改为您视图之外的 eg(1000,1000) 即可。

var myLatLng0 = L.latLng(1000,1000);

var myObject = L.marker(myLatLng,{....}); myObject.latlng = myLatLng;

或 var myObject = L.polygon(myPath,{....}); myObject.path = myPath;

隐藏/显示标记:

myObject.setLatLng(myLatLng0); myObject.setLatLng(myObject.latlng);

隐藏/显示折线或多边形:

myObject.setLatLngs(myLatLng0); myObject.setLatLngs(myObject.path);

注意:隐藏折线和多边形也适用于 setLatLngs(false)。标记的 setLatLng(false) 会出错。

于 2020-01-27T09:39:33.473 回答