2016-10-01 40 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); 
     }