通过地图上的WMS循环循环



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

最新更新