【发布时间】:2018-10-31 15:44:32
【问题描述】:
如果选择了某个地图(如果在 LayerControl 中打开了 layerX,layer1 将被 layer2 替换,并且当(Tile )layerX 不再被选中,再次用 layer1 替换 layer2),所以我在 overlayadd 和 overlayremove 上有监听器(
map.on('overlayadd', function(layer){if(layer.name === "layerX"){
layers_on = !!map.hasLayer(layer1);
layer1.remove();
layer_selector.removeLayer(layer1);
if(layers_on){map.addLayer(layer2);
layer_selector.addOverlay(layer2, "layer2");
}});
map.on('overlayremove', function(layer){if(layer.name === "layerX"){
layers_on = !!map.hasLayer(layer2);
layer2.remove();
layer_selector.removeLayer(layer2);
if(layers_on){map.addLayer(layer1);}
layer_selector.addOverlay(layer1, "layer1");
}});
打开 LayerX 时代码工作正常,但是当我在打开 layer2 的情况下删除它时,它实际上并没有删除它,只是在 layer_control 中替换它并在其顶部添加 layer1
简单地说,我需要在 LayerControl 中动态显示两个地图之一,如果 LayerX 在则显示 Layer1 在其他情况下显示 Layer2。 (并且图层本身是可选的)
【问题讨论】:
-
也许有趣的是,当您使用 map.eachLayer 读取所有图层时,该图层不再出现而且它可能与渲染透明图层有关,因为图层 1 和 2 都是透明的
标签: javascript leaflet