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);