2016-10-01 5 views
0

Ich möchte, dass der letzte Kreismarker gelöscht wird, wenn ein neuer erstellt wird. Dies geschieht, wenn der Benutzer klickt.Kreismarkierung löschen, wenn eine neue erstellt wird

 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); 


     }); 

Das ist der Code, den ich so weit, aber wenn ich ich ERR_FILE_NOT_FOUND bekommen klicken.

Vielen Dank im Voraus, Ed.

+0

'ERR_FILE_NOT_FOUND.' haben Sie alles und Alarm nur Textnachricht auf der Karte versucht zu entfernen klicken ? Oder funktioniert es anders als dieser Code? –

+0

Der ERR_FILE_NOT_FOUND scheint zu passieren, wenn ich Ort aus der map.on-Funktion nehme. Wenn es innen ist, kann ich einen circleMarker machen, aber auf der Sekunde macht das removeLayer() einen Fehler, da es die Markierung nicht finden kann. –

Antwort

2

Wenn ich verstehe gut, was Sie tun wollen, ich glaube, Sie den Code zu kompliziert haben. Es ist genug, um den folgenden Code zu schreiben:

var location = new L.circleMarker(); 

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

Bitte sehen Sie die Geige zu sehen, ob dies ist, was Sie wollten: https://jsfiddle.net/vaillant/ch4qb28x/

1

Ich habe es so, hier zu arbeiten, was ich tat, wenn jemand anderes hat dieses Problem:

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); 
     } 
Verwandte Themen