添加标记/更新(如果存在)

Dio*_*lor 2 leaflet

下面的表达式在每次点击时添加一个新标记。

map.on('click', function(e) {
    var new_event_marker = L.marker(e.latlng, { draggable: true} );     
    new_event_marker.addTo(map);        
});
Run Code Online (Sandbox Code Playgroud)

如何重写上述内容,使其仅创建一个标记?如果标记存在,则更新其 latlng。

谢谢

ond*_*cka 6

首先,您应该在点击功能之外定义您的标记。然后您可以测试标记是否存在。以下代码应该可以工作:

var new_event_marker;  // replace marker

map.on('click', function(e) {

 if(typeof(new_event_marker)==='undefined')
 {
  new_event_marker = new L.marker(e.latlng,{ draggable: true});
  new_event_marker.addTo(map);        
 }
 else 
 {
  new_event_marker.setLatLng(e.latlng);         
 }
});
Run Code Online (Sandbox Code Playgroud)