Ich habe begonnen, die Broschüre als Open-Source-Karte zu verwenden: http://leaflet.cloudmade.com/
Der folgende jQuery-Code ermöglicht die Erstellung von Markierungen auf der Karte beim Klicken auf die Karte:
map.on('click', onMapClick);
function onMapClick(e) {
var marker = new L.Marker(e.latlng, {draggable:true});
map.addLayer(marker);
marker.bindPopup("<b>Hello world!</b><br />I am a popup.").openPopup();
};
Derzeit kann ich (in meinem Code) jedoch keine vorhandenen Markierungen löschen oder alle von mir erstellten Markierungen auf einer Karte finden und in ein Array einfügen. Kann mir jemand helfen zu verstehen, wie das geht? Die Dokumentation der Broschüre finden Sie hier: http://leaflet.cloudmade.com/reference.html
Antworten:
Sie müssen Ihren "var marker" aus der Funktion entfernen. Dann können Sie später darauf zugreifen:
dann später :
Auf diese Weise können Sie jedoch nur den neuesten Marker verwenden, da der Var-Marker jedes Mal durch den neuesten gelöscht wird. Eine Möglichkeit besteht darin, ein globales Array von Markern zu erstellen und Ihren Marker in das globale Array einzufügen.
quelle
map._layers
.Sie können Markierungen auch in ein Array verschieben. Siehe Codebeispiel, das funktioniert bei mir:
quelle
Hier finden Sie den Code und die Demo zum Hinzufügen des Markers , Löschen eines beliebigen Markers und Abrufen aller vorhandenen / hinzugefügten Marker :
Hier ist der gesamte JSFiddle-Code . Auch hier ist die ganzseitige Demo .
Hinzufügen des Markers:
Markierung löschen:
Alle Markierungen in der Karte abrufen:
quelle
map._layers[ml].feature
nicht mehr , um alle Marker zu erhalten.Hier ist eine jsFiddle , mit der Sie mithilfe Ihrer
onMapClick
Methode Markierungen erstellen und diese dann durch Klicken auf einen Link löschen können.Der Vorgang ähnelt dem von undefined. Fügen Sie jeden neuen Marker zu einem
markers
Array hinzu, damit Sie auf einen bestimmten Marker zugreifen können, wenn Sie später mit ihm interagieren möchten.quelle
delete
das Element verwenden , um es zu entfernen. Zum Beispieldelete markers[$(this).attr('id')];
.(1) Hinzufügen einer Ebenengruppe und eines Arrays zum Halten von Ebenen und Verweisen auf Ebenen als globale Variablen:
var search_group = new L.LayerGroup (); var clickArr = new Array ();
(2) Karte hinzufügen
(3) Fügen Sie der Karte eine Gruppenebene hinzu
map.addLayer (search_group);
(4) die Funktion "Zur Karte hinzufügen" mit einem Popup, das einen Link enthält, der beim Klicken eine Option zum Entfernen enthält. Dieser Link hat als ID die Lat-Länge des Punktes. Diese ID wird dann verglichen, wenn Sie auf eine Ihrer erstellten Markierungen klicken und diese löschen möchten.
(5) Die Entfernungsfunktion, vergleichen Sie den Marker lat long mit der ID, die beim Entfernen ausgelöst wurde:
quelle
Wenn Sie die Ehrfurcht vor dem Marker in der Additionsfunktion speichern, kann der Marker ihn selbst entfernen. Keine Notwendigkeit für Arrays.
quelle
Hast du es schon versucht
layerGroup
?Dokumente hier https://leafletjs.com/reference-1.2.0.html#layergroup
Erstelle einfach eine Ebene, füge alle Marker zu dieser Ebene hinzu, dann kannst du Marker leicht finden und zerstören.
quelle
In meinem Fall habe ich verschiedene Ebenengruppen, damit Benutzer Cluster mit ähnlichen Typmarkierungen anzeigen / ausblenden können. In jedem Fall löschen Sie jedoch einen einzelnen Marker, indem Sie Ihre Ebenengruppen durchlaufen, um ihn zu finden und zu löschen. Suchen Sie während der Schleife nach einem Marker mit einem benutzerdefinierten Attribut, in meinem Fall einem 'Schlüssel', der hinzugefügt wurde, als der Marker zur Ebenengruppe hinzugefügt wurde. Fügen Sie Ihren 'Schlüssel' wie ein Titelattribut hinzu. Später wird dies eine Ebenenoption erhalten. Wenn Sie diese Übereinstimmung finden, entfernen Sie .removeLayer () und dieser bestimmte Marker wird entfernt. Hoffe das hilft dir weiter!
quelle
Vielleicht bin ich zu spät dafür, aber ich habe immer noch ein offenes Sorce-Projekt erstellt, um dasselbe zusammen mit einer anderen Sache zu tun
https://github.com/ikishanoza/ionic-leaflet
Bitte checke aus und starte, wenn du magst :)
quelle