我正在起草带有传单的应用程序。基本上,我需要添加几层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){
?????
}
因为在您的代码 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()
添加在末尾而不是填充数组。