即使更改了基本层,也如何保持前面的覆盖层

时间:2019-04-02 22:52:19

标签: javascript leaflet

我有一个包含3个基础层和2个覆盖层的传单地图。当用户单击以显示叠加层时,它会正确显示为最前面的层。但是,当用户更改基础层时,尽管仍然单击叠加层,但基础层被置于最前面。我希望叠加层始终显示为最前面的层。

我尝试更改覆盖层的zIndex,还尝试了以下代码:

var baselayers = {
    "Total Votes Cast": TotalVoteCountLayer,
    "Andrew Cuomo Votes": CuomoLayer,
    "Cynthia Nixon Votes": NixonLayer,
};

var overlays = {
            "NYS Assembly Districts": AssemblyOverlay,
            "NYC Council Districts": CouncilOverlay,
};

L.control.layers(baselayers, overlays).addTo(mymap);

mymap.on('baselayerchange', function(eventLayer) {
    if (eventLayer.name === 'NYS Assembly Districts'){
    overlays.bringToFront();
    }
    if (eventLayer.name === 'NYC Council Districts'){
    overlays.bringToFront();
    }
});

2 个答案:

答案 0 :(得分:0)

BringToFront是Leaflet矢量图层方法。它不适用于您的overlays图层字典。

正确的常规解决方案确实是在图层上使用zIndex选项。如果您需要帮助,请说明如何尝试,以便我们可以了解为什么它不起作用。

答案 1 :(得分:0)

使用了以下解决方案:

L.control.layers(baselayers, overlays).addTo(mymap);

mymap.on('baselayerchange', function() {
    if (mymap.hasLayer(AssemblyOverlay)) {
        AssemblyOverlay.bringToFront();
    }
    if (mymap.hasLayer(CouncilOverlay)) {
        CouncilOverlay.bringToFront();
    }
});