Javascript 如何更改传单中的多边形窗格(自定义窗格)
我了解了如何在自定义窗格中使用和及其关联项创建多边形 创建多边形后,我可以将其切换到其他(自定义)窗格吗? 我在自定义窗格中创建多边形,如下所示:Javascript 如何更改传单中的多边形窗格(自定义窗格),javascript,leaflet,Javascript,Leaflet,我了解了如何在自定义窗格中使用和及其关联项创建多边形 创建多边形后,我可以将其切换到其他(自定义)窗格吗? 我在自定义窗格中创建多边形,如下所示: // create custom pane mymap.createPane('polygonView'); var polygonViewPane = mymap.getPane('polygonView'); polygonViewPane.style.zIndex = 300; // with custom renderer var myre
// create custom pane
mymap.createPane('polygonView');
var polygonViewPane = mymap.getPane('polygonView');
polygonViewPane.style.zIndex = 300;
// with custom renderer
var myrenderer = L.svg({
pane: polygonViewPane
});
// create polygon in a custom pane (note the `renderer:myrenderer` or `pane:polygonViewPane` both work)
var myPoly = L.polygon([
[51.509, -0.08],
[51.503, -0.06],
[51.51, -0.047]
], {
fillOpacity: 1,
pane: polygonViewPane
}).addTo(mymap);
看起来我应该能够用如下内容切换窗格:
// changes pane in options.pane, but appearance on the map is same
myPoly.setStyle({pane: polygonViewPaneTop});
// also does not work (command fails without output in console?)
myPoly.setStyle({renderer: myrenderer2});
但这两种方法都不起作用。我可以使用polygonViewPane.style.zIndex=800切换整个窗格的zIndex代码>,但我通常在主窗格上有多个多边形,我只想在所有层的前面显示一个多边形
编辑:
结合伊万桑切斯的答案更新了小提琴:
请注意,您需要为多边形切换渲染器
,以在地图视图上切换窗格(请参见检查元素),并为myPoly.options.pane
切换窗格
,以正确显示新窗格。否,传单不允许动态更改窗格
从地图中删除图层,更改其选项,然后重新添加
如果您的问题是使直线/多边形相互重叠,请记住,您可以对它们进行重叠。谢谢。我还要补充一点,就是bringToFront()
仅在单个渲染器中进行排序(请参阅;因此,如果它似乎无法正常工作,请检查多个渲染器。我对某些层使用了自定义渲染器,但不是所有层。要将所有路径层排序在一起,我需要在所有路径层上使用相同的渲染器。我花了一段时间才找到一个…:)
// THIS WORKS; polygon switches pane and `myPoly.options.pane` shows new pane.
myPoly.removeFrom(mymap);
myPoly.setStyle({pane: polygonViewPaneTop, renderer: myrenderer2});
myPoly.addTo(mymap);