Zacząłem używać ulotki jako mapy open source, http://leaflet.cloudmade.com/
Poniższy kod jQuery umożliwi tworzenie znaczników na mapie na mapie kliknij:
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();
};
Ale obecnie nie ma dla mnie (w moim kodzie) możliwości usunięcia istniejących znaczników lub znalezienia wszystkich znaczników, które utworzyłem na mapie i umieszczenia ich w tablicy. Czy ktoś może mi pomóc zrozumieć, jak to zrobić? Dokumentacja ulotki jest dostępna tutaj: http://leaflet.cloudmade.com/reference.html
Odpowiedzi:
musisz usunąć swój "marker var" z funkcji. Później możesz uzyskać do niego dostęp:
potem później:
Ale w ten sposób możesz mieć tylko najnowszy znacznik, ponieważ za każdym razem znacznik var jest usuwany przez najnowszy. Więc jednym ze sposobów jest utworzenie globalnej tablicy znaczników i dodanie znacznika do tablicy globalnej.
źródło
map._layers
.Możesz także wpychać znaczniki do tablicy. Zobacz przykład kodu, to działa dla mnie:
źródło
Oto kod i wersja demonstracyjna dodawania znacznika , usuwania dowolnego znacznika, a także pobierania wszystkich obecnych / dodanych znaczników :
Oto cały kod JSFiddle . Tutaj jest również pełne demo strony .
Dodawanie znacznika:
Usuwanie znacznika:
Zdobycie wszystkich znaczników na mapie:
źródło
map._layers[ml].feature
już nie działa.Oto jsFiddle, który umożliwia tworzenie znaczników za pomocą Twojej
onMapClick
metody, a następnie usuwanie ich, klikając łącze.Proces jest podobny do undefined - dodaj każdy nowy znacznik do
markers
tablicy, aby mieć dostęp do określonego znacznika, gdy zechcesz później z nim skorzystać.źródło
delete
aby usunąć przedmiot. Na przykładdelete markers[$(this).attr('id')];
.(1) dodaj grupę warstw i tablicę, aby przechowywać warstwy i odniesienia do warstw jako zmienne globalne:
var search_group = new L.LayerGroup (); var clickArr = new Array ();
(2) dodaj mapę
(3) Dodaj warstwę grupową do mapy
map.addLayer (search_group);
(4) funkcja dodawania do mapy z wyskakującym okienkiem zawierającym łącze, które po kliknięciu będzie miało opcję usuwania. Ten link będzie miał, jako swój identyfikator, najszerszą długość punktu. Ten identyfikator zostanie następnie porównany z sytuacją, gdy klikniesz na jeden z utworzonych znaczników i zechcesz go usunąć.
(5) Funkcja usuwania, porównaj długość markera z identyfikatorem uruchomionym w usuwaniu:
źródło
Kiedy zapiszesz cześć do znacznika w funkcji dodawania, znacznik może go usunąć samodzielnie. Nie ma potrzeby stosowania tablic.
źródło
Czy próbowałeś już
layerGroup
?Dokumenty tutaj https://leafletjs.com/reference-1.2.0.html#layergroup
Po prostu utwórz warstwę, dodaj wszystkie znaczniki do tej warstwy, a następnie możesz łatwo znaleźć i zniszczyć znacznik.
źródło
Może jestem na to za późno, ale mimo to stworzyłem jeden otwarty projekt czarnoksięski, aby zrobić to samo i zrobić coś innego
https://github.com/ikishanoza/ionic-leaflet
proszę, sprawdź i zrób gwiazdkę, jeśli chcesz :)
źródło
W moim przypadku mam różne grupy warstw, aby użytkownicy mogli wyświetlać / ukrywać klastry podobnych znaczników typów. Jednak w każdym przypadku usuwasz pojedynczy znacznik, przechodząc przez grupy warstw, aby go znaleźć i usunąć. Podczas zapętlania wyszukaj znacznik z atrybutem niestandardowym, w moim przypadku „kluczem”, dodanym, gdy znacznik został dodany do grupy warstw. Dodaj swój „klucz”, tak jak w przypadku atrybutu tytułu. Później otrzymała opcję warstwy. Kiedy znajdziesz to dopasowanie, możesz .removeLayer () i pozbywa się tego konkretnego znacznika. Mam nadzieję, że ci to pomoże!
źródło