传单叠加顺序(点、线和多边形)

Leaflet overlay order (points, lines, and polygons)

我正在使用 Leaflet.StyledLayerControl 插件并希望设置我的图层,以便始终将多边形推到后面,多边形上方的线和线上方的点。

我在这里搜索了解决方案,但大多数是指 tilelayers 或地图窗格(我认为它们只适用于另一个版本的 leaflet 1.0)。

我希望能够打开和关闭线并让它们始终低于点(与折线下方的多边形相同)。

我想我必须用 setZIndexbringToFront() 做点什么,但我不确定从哪里开始。

如有任何帮助,我们将不胜感激。谢谢。

真正的简单解决方案是使用 Leaflet 1.0,它为您提供 map.createPane("paneName") functionality. So you create like "polygonsPane", "linesPane" and "pointsPane", that you specify to each of your vector / shape layers using their 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/

使用 Leaflet 0.7,您知道所有矢量图层都是同一 SVG 容器的一部分,在添加到地图时被附加,因此它们出现在所有先前添加的矢量之上.然后你必须使用 bringToFront() and/or bringToBack() 将它们重新排序到你需要的任何顺序。

您可能对 post 那个案例感兴趣:https://gis.stackexchange.com/questions/166252/geojson-layer-order-in-leaflet-0-7-5/167904#167904