在leaflet.js中的两个叠加层之间切换

时间:2018-10-25 08:50:32

标签: javascript leaflet

我需要在地图上方有一个可选的叠加层,如果选择了某个地图(如果在LayerControl中打开layerX,layer1将被layer2替换,以及何时(Tile,则在leaflet.js中的两个不同WMS层之间切换) )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 in处于启用状态,则显示Layer1,在其他情况下则显示Layer2。 (并且图层本身是可选的)

1 个答案:

答案 0 :(得分:0)

实例化一个L.Control.Layers,然后在该控件中添加两个L.TileLayer.WMS作为“基础层”。

这个名字可能是骗人的:这意味着,对于给定的L.Control.Layers,作为“基础层”传递的层是互斥的。它们并不需要成为主题上的基础层,并且您可以有多个L.Control.Layers,并且每个中都有一组互斥的L.Layer