如何更改Leaflet中的多边形窗格(自定义窗格)

时间:2017-02-15 16:27:24

标签: javascript leaflet

我想出了如何使用the Working with Map Panes tutorialthis Stack Overflow question及其关联的Fiddle在自定义窗格中创建多边形。

我可以在创建多边形后将其切换到另一个(自定义)窗格吗?

我在自定义窗格中创建了一个多边形,如下所示:

// 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,但是我在主窗格上通常会有多个多边形,我只想把一个放在我所有图层的前面。

https://jsfiddle.net/kbkxf220/

<小时/> 修改 更新了小提琴,结合了IvanSanchez的答案: https://jsfiddle.net/kbkxf220/3/

// THIS WORKS; polygon switches pane and `myPoly.options.pane` shows new pane.
myPoly.removeFrom(mymap);
myPoly.setStyle({pane: polygonViewPaneTop, renderer: myrenderer2}); 
myPoly.addTo(mymap);

请注意,您需要切换多边形的renderer以在地图视图上切换窗格(请参阅inspect元素)并切换pane myPoly.options.pane以正确显示新窗格。< / p>

1 个答案:

答案 0 :(得分:1)

不,Leaflet不允许动态更改窗格。

从地图中删除图层,更改其选项,然后重新添加。

如果您的问题是将线条/多边形叠加在一起,请记住您可以对它们进行call bringToFront()