传单,仅保留最后一个标记

时间:2016-06-17 03:55:20

标签: javascript leaflet markers

我正在使用传单在我的网站上显示地图。我希望用户在地图上显示并保存他的地址(通过放置标记),所以在我的代码中,如果用户双击,标记将被放置在地图上。问题是我不想禁用双击缩放。因此,当用户再次双击时,应删除先前的标记并添加新标记。 我搜索了Stack Overflow并找到了这段代码

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(Marker)之后;"不仅双击缩放停止工作,而且还没有添加标记到地图了 简介:我总是希望将最后一个标记添加到地图

1 个答案:

答案 0 :(得分: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/