Как удалять каждую предыдущую метку в leaflet.js , после добавления новой?

Подскажите, как правильно написать код и удалить предыдущие метки в leaflet ?

mymap.on("click", function(e){
        let newMarker = new L.Marker([e.latlng.lat, e.latlng.lng]);
        newMarker.addTo(mymap);            
    });

Cейчас происходит постоянное добавление новой, а нужно добавить только одну. Спасибо


Ответы (1 шт):

Автор решения: KirOlga

Инициализируем маркер до подписки на событие 'клик'. Затем, если на карте есть слой 'newMarker', мы удаляем его. После этого добавляем новый маркер.

    let newMarker;
    mymap.on('click', function(e){
        if (mymap.hasLayer(newMarker)){
            mymap.removeLayer(newMarker);
        }
        newMarker = new L.Marker([e.latlng.lat, e.latlng.lng]);
        newMarker.addTo(mymap);            
    });

Или можно сделать вот так:

mymap.on('click', function(e){
    if (mymap.hasLayer(this.layer)){
        mymap.removeLayer(this.layer);
    }
    this.layer = new L.Marker([e.latlng.lat, e.latlng.lng]);
    this.layer.addTo(mymap);            
});
→ Ссылка