How to clear leaflet map of all markers and layers before adding new ones?

前端 未结 6 1633
遇见更好的自我
遇见更好的自我 2021-02-05 00:02

I have the fallowing code:

map: function (events) {
    var arrayOfLatLngs = [];
    var _this = this;

    // setup a marker group
    var markers = L.markerClu         


        
6条回答
  •  南旧
    南旧 (楼主)
    2021-02-05 00:53

    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'.

提交回复
热议问题