【问题标题】:Looping through WMS Layers on a map循环遍历地图上的 WMS 图层
【发布时间】:2017-10-02 10:27:12
【问题描述】:

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

【问题讨论】:

    标签: javascript leaflet layer wms


    【解决方案1】:

    因为在您的代码中 layer(令人困惑的命名!)是一个包含 L.TileLayer 实例的 Array...

    function showLayer(i){
        layer.forEach(function(l){ l.removeFrom(map); });
        layer[i].addTo(map);
    }
    

    另外,请注意正确的语法是 array.push(foo) 而不是 array.push = foo。另请注意,创建具有初始长度的数组可能会使push() 在末尾添加更多元素,而不是填满数组。

    【讨论】:

      猜你喜欢
      • 2014-12-04
      • 1970-01-01
      • 2011-06-18
      • 2012-04-19
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多