1

私はマーカーのカスタムコントロールを追加したリーフレットAPIを使用しています。

そして、すべてのマーカーを削除する傾向があるボタンがあります。

問題

ラッピングによって、すべてのマーカーを削除する必要がありますが、関数が機能しません....ブラウザでコンソールエラーが発生しないため、私は暗闇にあり、api の構造を完全に理解していませんでした。

脚本

            var markers = new L.FeatureGroup();
            map.on('click', function markerPlace(e) {
                //L.marker(e.latlng, { icon: markerIcon, draggable: true }).addTo(map);
            marker = L.marker(e.latlng, { icon: markerIcon, draggable: true }).addTo(map);
                markers.addLayer(marker);
                map.off('click', markerPlace);
            });
        }).addTo(map);

    //onClick this button we have to remove all marker
    <button id="removeMarker">Remove Markers</button>      
    $('#removeMarker').click(function (e) {map.removeLayer(markers) });

誰かがそれについて考えている場合は、助けてください。または、あらゆる種類のリファレンスをいただければ幸いです。お時間をいただきありがとうございます

4

1 に答える 1

4

コードを正しく識別すると、最初の間違いを簡単に見つけることができます。

var markers = new L.FeatureGroup();

map.on('click', function markerPlace(e) {
    //L.marker(e.latlng, { icon: markerIcon, draggable: true }).addTo(map);
    marker = L.marker(e.latlng, { icon: markerIcon, draggable: true }).addTo(map);
    markers.addLayer(marker);
    map.off('click', markerPlace);
});

}).addTo(map); // <- What is this doing here

これにより、大きなファット コンソール エラーが発生するはずです。私はそれがあなたに次のL.FeatureGroupように属していると仮定しています:

var markers = new L.FeatureGroup().addTo(map); <- Moved to here

map.on('click', function markerPlace(e) {
    //L.marker(e.latlng, { icon: markerIcon, draggable: true }).addTo(map);
    marker = L.marker(e.latlng, { icon: markerIcon, draggable: true }).addTo(map);
    markers.addLayer(marker);
    map.off('click', markerPlace);
});

マーカーをL.FeatureGroup呼び出し先に追加したいのにmarkers、なぜそれらをマップに追加するのでしょうか?

marker = L.marker(e.latlng, { icon: markerIcon, draggable: true }).addTo(map);

これは次のように変更する必要があります。

marker = L.marker(e.latlng, { icon: markerIcon, draggable: true }).addTo(markers);

つまり、マップのクリック イベントで、マップからマーカー フィーチャ レイヤーを削除しようとしていますが、これは適切に追加されておらず、フィーチャ グループではなくマップにマーカーを追加しました。

PS: マーカーを削除したいのですが、実際にやろうとしているのは機能グループ全体を削除することです。機能グループをそのままにしてマーカーのみを削除する場合は、次のclearLayers方法を使用することもできL.FeatureGroupます。

markers.clearLayers();
于 2015-09-16T12:01:24.853 に答える