在地图上循环通过WMS图层

时间:2017-10-02 10:27:12

标签: javascript leaflet layer wms

我正在使用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){
        ?????
    }

1 个答案:

答案 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()在末尾添加更多元素而不是填充数组。