如何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();
}
如果我在地图中添加了一组图层,即:
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();
}