2016-06-17 3 views
2

Я использую рекламный листок для отображения карт на своем сайте. Я хочу, чтобы пользователь показывал и сохранял свой адрес на карте (помещая маркер), поэтому в моем коде, если пользователь будет дважды щелкать, маркер будет помещен на карту. Проблема в том, что я не хочу отключать двойное масштабирование. Поэтому, когда пользователь дважды щелкает повторно, предыдущий маркер следует удалить и добавить новый маркер. Я искал переполнение стека и достиг к этому кодуЛистовка, сохраняющая только последний маркер

map.on('dblclick', addMarker); 
var Marker; 
function addMarker(e) { 
    //remove previous markers 
    map.removeLayer(Marker); 
    // Add marker to map at click location; add popup window 
    Marker = new L.marker(e.latlng,{draggable:true}).addTo(map); 
} 

Но после добавления «map.removeLayer (маркер);» не только двойной щелчок мыши перестали работать, но и маркер добавлен к карте больше Реферат: Я всегда хочу сохранить последний маркер, добавленный к карте

ответ

4

Сценарий перестает работать при первом двойном щелчке, потому что он пытается удалить Marker, который еще не назначена при инициализации.

После возникновения ошибки остальная часть функции JS прекращается: маркер не добавлен, нет двойного щелчка.

Просто попробуйте установить Marker, прежде чем пытаться его удалить.

map.on('dblclick', addMarker); 
var Marker; 

function addMarker(e) { 
    //remove previous markers 
    if (Marker) { 
    map.removeLayer(Marker); 
    } 
    // Add marker to map at click location; add popup window 
    Marker = new L.marker(e.latlng, { 
    draggable: true 
    }).addTo(map); 
} 

Демо: http://jsfiddle.net/3v7hd2vx/26/

Смежные вопросы