2017-07-26 6 views
1

リーフレットのJavaScriptを使用しています。私はリーフレットのoverlayMapsレイヤーをプログラムで削除する

1)

は、私が使用して十分に簡単に最初に行うことができますマップから現在のオーバーレイを削除し、すべてのL.Control層 2)をオフに... 2つのことを行うために、私の「クリアボタン」を希望しますこのコード:

var checks = document.querySelectorAll('[type = "checkbox"]'), i; 
    function uncheckBoxes() { 
     for (i = 0; i < checks.length; ++i) { 
      checks[i].checked = false; 
     } 
    } 

次はもう少しトリッキーです。私はremoveLayer()とclearLayers()関数を使用しようとしましたが、動作しません。私はリーフレットのドキュメントでL.control overlayMapレイヤーをマップから削除する方法は表示されません。

これについての洞察は非常に高く評価されます。

答えて

1

マップからいくつかのレイヤー/オーバーレイをプログラムで削除する際の難しさは、正確にはわかりません。

通常、レイヤーコントロールはマップ上で何が起こっているのかを自動的に反映します(その場合は、layerがオーバーレイの1つである場合、関連するチェックボックスはアンティックになります)。

マップからすべてのオーバーレイを除去するために、あなただけのこれらのオーバーレイへの参照を保持する必要があるとして、それらをループし、マップからそれらを削除します。

var overlays = { 
    'Name 1': someLayer, 
    'Name 2': someOtherLayer 
}; 

L.control.layers(null, overlays).addTo(map); 

// Whenever you want to remove all overlays: 
for (var name in overlays) { 
    map.removeLayer(overlays[name]); 
} 

デモ:https://jsfiddle.net/3v7hd2vx/357/

関連する問題