Leaflet 未移除的标记:传单

Leaflet 未移除的标记:传单,leaflet,angular-leaflet-directive,dc.leaflet.js,Leaflet,Angular Leaflet Directive,Dc.leaflet.js,我正在使用传单api。我在其中添加了标记的自定义控件 我有一个按钮,可以移除所有标记 问题 通过包装,我必须删除所有标记,但功能不工作…浏览器没有给出任何控制台错误,所以我一无所知,没有完全理解api的结构 脚本 var markers = new L.FeatureGroup(); map.on('click', function markerPlace(e) { //L.marker(e.latlng, { ic

我正在使用传单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) });
var markers=新的L.FeatureGroup();
地图上('click',函数标记位置(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);
地图关闭(“单击”,标记位置);
});
}).addTo(地图);
//单击此按钮后,我们必须删除所有标记
删除标记
$('#removeMarker')。单击(函数(e){map.removeLayer(markers)});

如果有人对此有所了解,请提供帮助或任何形式的参考,我们将不胜感激。感谢您抽出时间

当您正确识别代码时,您可以轻松发现第一个错误:

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
因此,您希望将标记添加到名为
markers
L.FeatureGroup
中,那么为什么要将它们添加到地图中呢

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

marker = L.marker(e.latlng, { icon: markerIcon, draggable: true }).addTo(markers);
简而言之:在地图的单击事件中,您试图从地图中删除标记featurelayer,但该标记尚未正确添加,您已将标记添加到地图,而不是featuregroup

PS:您想删除标记,但实际上您要做的是删除整个featuregroup。如果您想保留featuregroup,只移除标记,您也可以使用
L.featuregroup
clearLayers
方法:

markers.clearLayers();

正确识别代码后,您可以很容易地发现第一个错误:

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
因此,您希望将标记添加到名为
markers
L.FeatureGroup
中,那么为什么要将它们添加到地图中呢

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

marker = L.marker(e.latlng, { icon: markerIcon, draggable: true }).addTo(markers);
简而言之:在地图的单击事件中,您试图从地图中删除标记featurelayer,但该标记尚未正确添加,您已将标记添加到地图,而不是featuregroup

PS:您想删除标记,但实际上您要做的是删除整个featuregroup。如果您想保留featuregroup,只移除标记,您也可以使用
L.featuregroup
clearLayers
方法:

markers.clearLayers();

正确识别代码后,您可以很容易地发现第一个错误:

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
因此,您希望将标记添加到名为
markers
L.FeatureGroup
中,那么为什么要将它们添加到地图中呢

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

marker = L.marker(e.latlng, { icon: markerIcon, draggable: true }).addTo(markers);
简而言之:在地图的单击事件中,您试图从地图中删除标记featurelayer,但该标记尚未正确添加,您已将标记添加到地图,而不是featuregroup

PS:您想删除标记,但实际上您要做的是删除整个featuregroup。如果您想保留featuregroup,只移除标记,您也可以使用
L.featuregroup
clearLayers
方法:

markers.clearLayers();

正确识别代码后,您可以很容易地发现第一个错误:

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
因此,您希望将标记添加到名为
markers
L.FeatureGroup
中,那么为什么要将它们添加到地图中呢

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

marker = L.marker(e.latlng, { icon: markerIcon, draggable: true }).addTo(markers);
简而言之:在地图的单击事件中,您试图从地图中删除标记featurelayer,但该标记尚未正确添加,您已将标记添加到地图,而不是featuregroup

PS:您想删除标记,但实际上您要做的是删除整个featuregroup。如果您想保留featuregroup,只移除标记,您也可以使用
L.featuregroup
clearLayers
方法:

markers.clearLayers();