如何select在地图上显示哪一层?

How to select which layer to show on a map?

如果我在地图中添加了一组图层,即:

   for (i = 0; i < myoptionsArray.length; i++) {
        lyr = L.tileLayer.wms(url, {optionsArray[i]});
        layer.push(lyr);
        lyr.addTo(mymap);
        }

如何以编程方式select显示哪个图层[i]?我在 Leaflet 文档中找不到任何可用的功能...

创建图层时将图层添加到 featureGroup。一个好主意是为您的图层添加一个名称,这样在之后获取它会更简单:

var group = new L.featureGroup();
for (i = 0; i < myoptionsArray.length; i++) {
     lyr = L.tileLayer.wms(url, {optionsArray[i]});
     layer.push(lyr);
     layer.name = 'My_layer ...';
     lyr.addTo(group);
}
mymap.addLayer(group);

在这个例子中,对我来说,每次迭代都提供一个层。您将它添加到您的组中,然后等待循环结束将其添加到地图中。

要显示或隐藏您将需要此功能:

function showHideTile(tileToShowOrHide)
{
    group.eachLayer(function(layer) {
        layer.eachLayer(function(yourLayer) {
            //Do your test here
            if (yourLayer == tileToShowOrHide) {
                //To add the layer to your map
                map.addLayer(yourLayer);
            } else {
                //To remove the layer
                map.removeLayer(yourLayer);                
            }
            //You can also send an array to this function
            //With the layer name and what you want to do
            //Ex : tile1 hide
        })
    })
}

不是最好的方法,但它会给你一些开始的东西。

我是这样做的

1- 将图层加载到组中:

var group = new L.featureGroup();
for (i = 0; i < myoptionsArray.length; i++) {
     lyr = L.tileLayer.wms(url, {optionsArray[i]});
     layer.push(lyr);
     lyr.addTo(group);
}
mymap.addLayer(group);

2 - 然后我添加了一个函数来显示我需要的图层:

function showLayer(i) {
 layer[i].bringToFront();
}