2016-10-01 39 views
0

我想要在用户单击时发生新标记时删除最后一个标记。创建新标记时删除圈标记

 app.initialize(); 

     var count = 0; 

     var location; 
     map.on('click', function(e){ 
      if (count == 1){ 
       map.removeLayer(location); 
      }else{ 
       count = 1; 
      } 
      var cords = String(e.latlng); 
      cords = cords.match(/\(([^)]+)\)/)[1]; 
      lat = cords.substring(0, cords.search(",")); 
      lng = cords.substring(cords.search(",")+1); 
      location = new L.circleMarker([lat, lng], {radius:100,}); 
      map.addLayer(location); 


     }); 

这是我到目前为止的代码,但每当我点击我得到ERR_FILE_NOT_FOUND。

在此先感谢,编辑。

+0

'ERR_FILE_NOT_FOUND.'你试图消除在地图上的一切,只是警报短信点击?或者它是否工作在这个代码之外? –

+0

当我从map.on函数中取出位置时,似乎发生ERR_FILE_NOT_FOUND。如果它在里面,我可以制作一个circleMarker,但第二个removeLayer()会发出错误,因为找不到标记。 –

回答

2

如果我没有理解好你想要做什么,我想你可能已经过于复杂的代码。这是足以写入以下代码:

var location = new L.circleMarker(); 

map.on('click', function(e) { 
     map.removeLayer(location); 
     location = new L.circleMarker(e.latlng, {radius:10,}); 
    map.addLayer(location); 
}); 

请看小提琴,看看是否是你想要的东西:https://jsfiddle.net/vaillant/ch4qb28x/

1

我得到了它所以这里的工作就是我所做的,如果任何人有这个问题:

app.initialize(); 
     var mark = L.layerGroup(); 

     map.on('click', function(e){ 
      if (map.hasLayer(mark)){ 
       map.removeLayer(mark); 
       mark.clearLayers(); 
      } 

      addMarker(e); 

     }); 

     function addMarker(e){ 
      var cords = String(e.latlng); 
      cords = cords.match(/\(([^)]+)\)/)[1]; 
      lat = cords.substring(0, cords.search(",")); 
      lng = cords.substring(cords.search(",")+1); 
      mark.addLayer(new L.circleMarker([lat, lng], {radius:100,})); 
      map.addLayer(mark); 
     }