如果我在地图中添加了一系列图层,例如:
for (i = 0; i < myoptionsArray.length; i++) {
lyr = L.tileLayer.wms(url, {optionsArray[i]});
layer.push(lyr);
lyr.addTo(mymap);
}
如何以编程方式选择要显示的图层[i]?我无法在传单文档中找到任何可用的功能...
答案 0 :(得分:2)
创建图层时,将图层添加到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 :(得分:0)
我这样做了。
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();
}