javascript - que - ¿Cómo borrar el mapa de folletos de todos los marcadores y capas antes de agregar otros nuevos?
marcar puntos en google maps api (2)
Tengo el siguiente código:
map: function (events) {
var arrayOfLatLngs = [];
var _this = this;
// setup a marker group
var markers = L.markerClusterGroup();
events.forEach(function (event) {
// setup the bounds
arrayOfLatLngs.push(event.location);
// create the marker
var marker = L.marker([event.location.lat, event.location.lng]);
marker.bindPopup(View(event));
// add marker
markers.addLayer(marker);
});
// add the group to the map
// for more see https://github.com/Leaflet/Leaflet.markercluster
this.map.addLayer(markers);
var bounds = new L.LatLngBounds(arrayOfLatLngs);
this.map.fitBounds(bounds);
this.map.invalidateSize();
}
Inicialmente llamo a esta función y agregará todos los events
al mapa con marcadores y agrupaciones.
en algún punto de paso, en algunos otros eventos, el mapa se acercará a los nuevos eventos, pero los anteriores todavía están en el mapa.
He intentado this.map.removeLayer(markers);
y algunas otras cosas, pero no puedo hacer desaparecer los viejos marcadores
¿algunas ideas?
Estás perdiendo la referencia del marcador porque está configurado con var. Trate de guardar las referencias a ''esto'' en su lugar.
mapMarkers: [],
map: function (events) {
[...]
events.forEach(function (event) {
[...]
// create the marker
var marker = L.marker([event.location.lat, event.location.lng]);
[...]
// Add marker to this.mapMarker for future reference
this.mapMarkers.push(marker);
});
[...]
}
Luego, más tarde, cuando necesite eliminar los marcadores, ejecute:
for(var i = 0; i < this.mapMarkers.length; i++){
this.map.removeLayer(this.mapMarkers[i]);
}
Alternativamente, en lugar de guardar cada referencia a cada marcador, simplemente puede guardar el clúster en "esto".
Si desea eliminar todas las capas actuales (marcadores) de su grupo, puede usar el método L.markerClusterGroup()
de L.markerClusterGroup()
. Su referencia se llama markers
por lo que deberá llamar:
markers.clearLayers();