【问题标题】:How to maintain overlay layer in front even when baselayer is changed即使更改了基础层,如何在前面保持覆盖层
【发布时间】:2019-04-02 22:52:19
【问题描述】:

我有一张带有 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();
    }
});

【问题讨论】:

    标签: javascript leaflet


    【解决方案1】:

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

    正确的通用解决方案确实是在您的图层上使用zIndex 选项。如果您需要这方面的帮助,请展示您是如何尝试的,以便我们能够理解为什么它不起作用。

    【讨论】:

    • 谢谢。这是我尝试设置 zIndex 的方法。功能委员会风格(委员会特征){返回{填充颜色:“紫色”,填充不透明度:.02,]颜色:'#2b2e5e',zIndex:2000,}; } var CouncilOverlay = L.geoJson(QueensCouncilDistricts,{ 风格:councilstyle,onEachFeature:councilOnEachFeature,})
    • zIndex 不是样式对象的一部分,而是 Leaflet GeoJSON 工厂的一个选项,以及 styleonEachFeature。注意:您应该编辑您的问题以添加详细信息,而不是在 cmets 中发布它们。
    【解决方案2】:

    使用了以下解决方案:

    L.control.layers(baselayers, overlays).addTo(mymap);
    
    mymap.on('baselayerchange', function() {
        if (mymap.hasLayer(AssemblyOverlay)) {
            AssemblyOverlay.bringToFront();
        }
        if (mymap.hasLayer(CouncilOverlay)) {
            CouncilOverlay.bringToFront();
        }
    });
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-02-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-03-25
      相关资源
      最近更新 更多