2017-10-02 10 views
0

私はリーフレットでアプリケーションを作成しています。基本的には、いくつかのWMSレイヤーを追加してから、タイムドループを使ってレイヤーを循環させる必要があります。これはコード(まだドラフト、私はそれをテストしていません)ですが、私は "showLayer(i)"の関数がありません。マップ上のWMSレイヤーをループする

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

(命名を混乱!)layerあなたのコードで以来またL.TileLayer ...

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

Array含むインスタンスで、正しい構文はarray.push(foo)なくarray.push = fooだろうということに気づきます。また、最初の長さの配列を作成すると、push()は、に配列を塗りつぶす代わりにの要素を末尾に追加することに注意してください。

関連する問題