问题描述
如果标记聚集,如何删除它们?因为如果它们被分组,则无法删除。但是一旦分组消失,那么一切都很好。
在尝试删除之前:
删除成功后:
var markers = L.markerClusterGroup();
map.addLayer(markers);
L.geoJSON(data,{
pointToLayer: pointToLayer,onEachFeature: onEachFeature,})
.on('click',markerOnClick)
.addTo(markers);
$.each(markers._map._layers,function (ml) {
if (markers._map._layers[ml].feature) {
if(markers._map._layers[ml].feature.properties.obj == 2 && markers._map._layers[ml].feature.properties.type == 1){
markers.removeLayer(this);
}
}
});
解决方法
只需使用 markers
标记集群组上的 eachLayer
method 迭代每个子标记(无论它们当前是否已集群)。
markers.eachLayer(layer => {
if(layer.feature.properties.obj == 2 && layer.feature.properties.type == 1) {
markers.removeLayer(layer);
}
});
访问 markers._map._layers
时,您会查找地图上当前的每个图层,但是 Leaflet.markercluster 会在您的标记聚类时删除它们(并用集群标记替换它们)。这就是您不再找到某些标记的原因。