我正在加载两个geoJson图层 - 这两个图层都是用于测试目的的相同数据,但是是从两个不同的json文件中提取的。当我在图层控制器中打开和关闭图层时,图层的绘制顺序会发生变化。
为什么会发生这种情况?
我已将我的代码放入JSFiddle:http://jsfiddle.net/lprashad/ph5y9/10/,JS如下:
//styling for watersheds_copy
var Orange = {
"color": "#ff7800",
"weight": 5,
"opacity": 0.65
};
var Water_Orange = L.geoJson(watersheds_copy, {
style: Orange
});
Water_Orange.addData(watersheds_copy);
//these are blue
var Water_blue = L.geoJson(watersheds, {});
Water_blue.addData(watersheds);
//This sets the inital order - last in layer list being on top. Except minimal - tile layer is always on bottom
var map = L.map('map', {
center: [41.609, -74.028],
zoom: 8,
layers: [minimal, Water_Orange, Water_blue]
});
var baseLayers = {
"Minimal": minimal,
"Night View": midnight
};
//This controls the order in the layer switcher. This does not change draw order
var overlays = {
"Water_Orange": Water_Orange,
"Water_blue": Water_blue
};
L.control.layers(baseLayers, overlays).addTo(map);
LP
答案 0 :(得分:2)
搜索时我发现这个网站上显示了一些Leaflet代码: http://ruby-doc.org/gems/docs/l/leaflet-js-0.7.0.3/lib/leaflet/src/control/Control_Layers_js.html
在其中我发现了autoZIndex的应用条件:
if (this.options.autoZIndex && layer.setZIndex) {
this._lastZIndex++;
layer.setZIndex(this._lastZIndex);
}
TileLayer是唯一具有setZIndex函数的图层类型,因此显然autoZIndex仅在那里工作。
我不确定哪个更让我烦恼。这个令人难以置信的限制或Leafet文档没有指出它的事实。
答案 1 :(得分:1)
至少在0.7.2上,我必须在bringToFront
的回调中使用map.on('overlayadd')
。 autoZIndex: false
在我的情况下也不起作用。 A comment on this issue可以解释原因。
答案 2 :(得分:0)
这不是L.GeoJson层特有的。据我所知,所有具有图层控制的Leaflet图层都是如此。打开的最后一层就在上面。我不认为这也是一个错误。这是我可以预测的行为,当我使用图层控制设计地图时,我会依赖它...