我正在使用Leaflet.StyledLayerControl插件,我想设置我的层,以便多边形总是被推到后面,线在多边形上方,点在线上方。
我在这里搜索了解决方案,但大多数都是指波浪线或地图窗格(我认为这只适用于传单1.0的另一个版本)
我希望能够打开和关闭直线,并使它们始终位于点下方(与多段线下方的多边形相同)。
我想我必须用setZIndex
或bringToFront()
做点什么,但我不知道从哪里开始。
如有任何帮助,我们将不胜感激。谢谢
简单的解决方案实际上是使用传单1.0,它为您提供了map.createPane("paneName")
功能。因此,您可以创建类似于"多边形窗格"、"线条窗格"one_answers"点窗格"的内容,并使用它们的pane
选项为每个矢量/形状层指定这些内容。
设置后,您可以将它们添加到地图中/从地图中删除,并且它们将始终插入指定的窗格中,因此遵循窗格的顺序。
// Create necessary panes in correct order (i.e. "bottom-most" first).
map.createPane("polygonsPane");
map.createPane("linesPane");
map.createPane("pointsPane");
L.polygon([/* coords */], { pane: "polygonsPane" }).addTo(map);
L.polyline([/* coords */], { pane: "linesPane" }).addTo(map);
L.circleMarker([/* coords */], { pane: "pointsPane" }).addTo(map);
演示:https://jsfiddle.net/3v7hd2vx/51/
使用传单0.7,您知道所有矢量层都是同一SVG容器的一部分,在添加到地图时都会被附加,因此它们会出现在之前添加的所有矢量之上。然后,您必须使用bringToFront()
和/或bringToBack()
将它们重新排序为所需的任何顺序。
你可能对这个案例的帖子感兴趣:https://gis.stackexchange.com/questions/166252/geojson-layer-order-in-leaflet-0-7-5/167904#167904