我正在使用Leaflet起草一个应用程序。基本上,我需要添加几个WMS图层,然后使用定时循环遍历它们。这是代码(仍然是草稿,我没有对其进行测试)但是我错过了" showLayer(i)
"的功能。
var osmUrl = 'http://{s}.tile.osm.org/{z}/{x}/{y}.png',
osm = new L.TileLayer(osmUrl, {maxZoom: 18}),
mymap = new L.Map('map', {layers: [osm], center: new L.LatLng(41.69906, 12.39258), zoom: 5, maxZoom:8});
var optionsArray =['opt1', 'opt2', ...];
var layer = new Array(myoptionsArray.length);
for (i = 0; i < myoptionsArray.length; i++) {
l = L.tileLayer.wms(url, {optionsArray[i]});
layer.push = l
l.addTo(mymap);
}
function myLoop(){
...count on i....
showLayer(i);
timerID = setTimeout(myLoop, 500);
}
myLoop();
function showLayer(i){
?????
}
答案 0 :(得分:1)
由于代码layer
(令人困惑的命名!)是包含Array
的实例的L.TileLayer
...
function showLayer(i){
layer.forEach(function(l){ l.removeFrom(map); });
layer[i].addTo(map);
}
另外,请注意正确的语法是array.push(foo)
而不是array.push = foo
。另请注意,创建具有初始长度的数组可能会使push()
在末尾添加更多元素而不是填充数组。