I have the fallowing code:
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(); }
I initially call this function and it will add all events
to the map with markers and clusters.
at some lather point i pass in some other events, the map will zoom in to the new events but the old ones are still on the map.
I've tried this.map.removeLayer(markers);
and some other stuff, but I can't get the old markers to disappear
Any ideas?
To refresh leaflet map when map container is already initialized with JavaScript, we call the off and remove methods before reloading the map. map. off(); map. remove();
Question: How To Delete The Current Leaflet Marker When Create New Search? use A LayerGroup Outside The Component To Store The Circle And The Marker And Every Time You Add A New Marker Clear The Layer Group And Add The New To Be Able To Delete It The Next Time You Add Another Marker.
_leaflet_id is an internal identifier that is set by Leaflet library when it needs it.
If you want to remove all the current layers (markers) in your group you can use the clearLayers
method of L.markerClusterGroup()
. Your reference is called markers
so you would need to call:
markers.clearLayers();
You're losing the marker reference because it's set with var. Try saving the references to 'this' instead.
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); }); [...] }
Then later when you need to remove the markers run:
for(var i = 0; i < this.mapMarkers.length; i++){ this.map.removeLayer(this.mapMarkers[i]); }
Alternatively, instead of saving each reference to each marker, you can just save the cluster to 'this'.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With