8

我有两个 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

4

3 回答 3

2

在搜索时,我偶然发现了显示一些传单代码的网站: 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 文档没有指出这一点的事实。

于 2014-07-17T23:37:47.050 回答
1

至少在 0.7.2 上,我不得不bringToFrontmap.on('overlayadd'). autoZIndex: false在我的情况下也不起作用。对此问题的评论可能会解释原因。

于 2014-04-30T23:47:16.343 回答
0

它并不特定于 L.GeoJson 层。据我所知,所有带有图层控制的 Leaflet 图层都是如此。打开的最后一层只是在顶部。我也不认为这是一个错误。这是我在使用图层控制设计地图时使用和依赖的可预测行为......

于 2014-03-06T09:04:15.333 回答