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 grupos.
en algún punto de espuma que paso en algunos otros eventos, el mapa se acercará a los nuevos eventos pero los antiguos todavía están en el mapa.
this.map.removeLayer(markers); y algunas otras cosas, pero no puedo hacer que los marcadores viejos desaparezcan
¿Algunas ideas?
Si desea eliminar todas las capas actuales (marcadores) en su grupo, puede usar el método clearLayers de L.markerClusterGroup() . Su referencia se llama markers , por lo que deberá llamar a:
markers.clearLayers();Estás perdiendo la referencia del marcador porque está configurada con var. Intente 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 en cada marcador, puede guardar el grupo en 'esto'.
map._panes.markerPane.remove();