W Google Maps API v2, gdybym chciał usunąć wszystkie znaczniki mapy, mógłbym po prostu:
map.clearOverlays();
Jak to zrobić w Google Maps API v3 ?
Patrząc na API referencyjne , nie jest dla mnie jasne.
W Google Maps API v2, gdybym chciał usunąć wszystkie znaczniki mapy, mógłbym po prostu:
map.clearOverlays();
Jak to zrobić w Google Maps API v3 ?
Patrząc na API referencyjne , nie jest dla mnie jasne.
Odpowiedzi:
Po prostu wykonaj następujące czynności:
I. Zadeklaruj zmienną globalną:
II. Zdefiniuj funkcję:
LUB
III. Wciśnij markery w „markerArray” przed wywołaniem następującego:
IV. Wywołaj funkcję
clearOverlays();
lubmap.clearOverlays();
tam, gdzie jest to wymagane.Otóż to!!
źródło
markersArray
pustą tablicę zamiast ustawiać jej długość, comarkersArray = [];
while
podejście do przetwarzania tablicę:while(markersArray.length) { markersArray.pop().setMap(null); }
. Po tym nie ma potrzeby czyszczenia tablicy.Taki sam problem. Ten kod już nie działa.
Naprawiłem to, zmieniam metodę clearMarkers w ten sposób:
set_map (null) ---> setMap (null)
Dokumentacja została zaktualizowana o szczegółowe informacje na ten temat: https://developers.google.com/maps/documentation/javascript/markers#remove
źródło
new Array();
?Wygląda na to, że w V3 nie ma jeszcze takiej funkcji.
Ludzie sugerują, aby przechowywać w tablicy odniesienia do wszystkich znaczników, które masz na mapie. A jeśli chcesz usunąć je wszystkie, po prostu przejdź przez tablicę i wywołaj metodę .setMap (null) dla każdego z odniesień.
Zobacz to pytanie, aby uzyskać więcej informacji / kodu.
Moja wersja:
Kod jest edytowaną wersją tego kodu http://www.lootogo.com/googlemapsapi3/markerPlugin.html Usunąłem potrzebę ręcznego wywoływania addMarker.
Plusy
Cons
źródło
Było to najprostsze ze wszystkich rozwiązań pierwotnie opublikowanych przez YingYang 11 marca 14 o 15: 049 pod oryginalną odpowiedzią na oryginalne pytanie użytkowników
Korzystam z tego samego rozwiązania 2,5 roku później z Google Maps v3.18 i działa jak urok
źródło
Nie wydaje mi się, żeby taki był w V3, więc użyłem powyższej niestandardowej implementacji.
Oświadczenie: Nie napisałem tego kodu, ale zapomniałem zachować odniesienie, kiedy połączyłem go z bazą kodu, więc nie wiem, skąd się wziął.
źródło
W nowej wersji v3 zalecili trzymanie się tablic. jak następuje.
Zobacz próbkę w omówieniu nakładki .
źródło
Galeria demonstracyjna Google zawiera prezentację tego, jak to robią:
http://code.google.com/apis/maps/documentation/javascript/examples/overlay-remove.html
Możesz wyświetlić kod źródłowy, aby zobaczyć, jak dodają znaczniki.
Krótko mówiąc, utrzymują znaczniki w globalnej tablicy. Podczas ich usuwania / usuwania zapętlają tablicę i wywołują „.setMap (null)” na danym obiekcie znacznika.
Jednak ten przykład pokazuje jedną „sztuczkę”. „Wyczyść” w tym przykładzie oznacza usunięcie ich z mapy, ale utrzymanie ich w tablicy, co pozwala aplikacji na szybkie ponowne dodanie ich do mapy. W pewnym sensie działa to jak „ukrywanie” ich.
„Usuń” usuwa również tablicę.
źródło
działa tylko na IE.
działa na chrome, firefox, czyli ...
źródło
Rozwiązanie jest dość łatwe. Można użyć metody:
marker.setMap(map);
. Tutaj określasz, na której mapie pojawi się pinezka.Tak więc, jeśli ustawisz
null
tę metodę (marker.setMap(null);
), pin zniknie.Teraz możesz napisać funkcję wiedźmy, jednocześnie usuwając wszystkie znaczniki na mapie.
Po prostu dodajesz, aby umieścić piny w tablicy i zadeklarować je za pomocą
markers.push (your_new pin)
lub za pomocą tego kodu, na przykład:Jest to funkcja, która może ustawić lub zniknąć wszystkie znaczniki twojej tablicy na mapie:
Aby usunąć wszystkie znaczniki, należy wywołać tę funkcję za pomocą
null
:Aby usunąć i zniknąć wszystkie znaczniki, należy zresetować tablicę znaczników w następujący sposób:
To jest mój kompletny kod. To najprostszy do jakiego mógłbym się zredukować. Bądź ostrożny , możesz wymienić
YOUR_API_KEY
w kodzie kluczowym interfejsem API Google:Możesz skonsultować się z programistą Google lub pełną dokumentację na stronie internetowej dla programistów Google .
źródło
Czyste i łatwe zastosowanie odpowiedzi rolingera.
źródło
Funkcja „
set_map
” opublikowana w obu odpowiedziach wydaje się już nie działać w interfejsie API Map Google v3.zastanawiam się co się stało
Aktualizacja:
Wygląda na to, że Google zmieniło interfejs API w taki sposób, że „
set_map
” nie jest „setMap
”.http://code.google.com/apis/maps/documentation/v3/reference.html
źródło
Tutaj możesz znaleźć przykład usuwania markerów:
https://developers.google.com/maps/documentation/javascript/examples/marker-remove?hl=es
źródło
Poniższe z Anona działa idealnie, choć z migotaniem przy wielokrotnym usuwaniu nakładek.
Po prostu wykonaj następujące czynności:
I. Zadeklaruj zmienną globalną:
II. Zdefiniuj funkcję:
III. Wciśnij markery w „markerArray” przed wywołaniem następującego:
IV. Wywołaj
clearOverlays()
funkcję, gdziekolwiek jest to wymagane.Otóż to!!
Mam nadzieję, że ci to pomoże.
źródło
for(in in markersArray){}
prawdopodobnie nie robi tego, czego się spodziewasz. JeśliArray
zostanie rozszerzony gdziekolwiek indziej w kodzie, będzie iterował również te właściwości, a nie tylko indeksy. Wersja javascript,markersArray.forEach()
która nie jest obsługiwana wszędzie. Lepiej byłoby zfor(var i=0; i<markersArray.length; ++i){ markersArray.setMap(null); }
Znalazłem użycie biblioteki markermanager w projekcie google-maps-utility-library-v3 jako najprostszy sposób.
1. Skonfiguruj MarkerManager
2. Dodaj znaczniki do MarkerManager
3. Aby usunąć znaczniki wystarczy zadzwonić pod MarkerManger jest
clearMarkers()
funkcjaźródło
clearMarkers
trzeba zrobić, to iterować wywołania markerówmarker.setMap(null)
(sprawdziłem źródło). Byłoby mniej pracy włożenie ich do tablicy i zrobienie tego sam.Możesz to zrobić w ten sposób:
źródło
Właśnie próbowałem tego z kmlLayer.setMap (null) i zadziałało. Nie jestem pewien, czy działałoby to ze zwykłymi markerami, ale wydaje się działać poprawnie.
źródło
Aby usunąć wszystkie nakładki, w tym polisy, markery itp.
po prostu użyj:
map = new google.maps.Map(document.getElementById("map_canvas"), myOptions);}
Oto funkcja, którą napisałem, aby to zrobić, tworzy mnie w aplikacji mapowej:
źródło
Aby usunąć wszystkie znaczniki z mapy, utwórz funkcje podobne do następujących:
1.addMarker (lokalizacja): ta funkcja służy do dodawania znacznika na mapie
2.clearMarkers (): ta funkcja usuwa wszystkie znaczniki z mapy, a nie z tablicy
3.setMapOnAll (mapa): ta funkcja służy do dodawania informacji o znacznikach do tablicy
4.deleteMarkers (): ta funkcja usuwa wszystkie znaczniki w tablicy, usuwając odniesienia do nich.
źródło
Najczystszym sposobem na to jest iteracja wszystkich funkcji mapy. Znaczniki (wraz z wielokątami, poliliniami itp.) Są przechowywane w warstwie danych mapy.
W przypadku dodawania znaczników za pomocą menedżera rysunków najlepiej utworzyć globalną tablicę znaczników lub wepchnąć znaczniki do warstwy danych podczas tworzenia w następujący sposób:
Polecam drugie podejście, ponieważ pozwala ono później użyć innych metod klasy google.maps.data.
źródło
Jest to metoda, której Google używa w co najmniej jednej próbce:
Sprawdź próbkę Google, aby zobaczyć pełny przykład kodu:
https://developers.google.com/maps/documentation/javascript/examples/places-searchbox
źródło
Nie wiem dlaczego, ale ustawienie
setMap(null)
moich znaczników nie działało dla mnie, gdy używamDirectionsRenderer
.W moim przypadku musiałem również zadzwonić
setMap(null)
do siebieDirectionsRenderer
.Coś w tym stylu:
źródło
Wystarczy przejść przez znaczniki i usunąć je z mapy, a następnie opróżnić tablicę znaczników map:
źródło
po prostu wyczyść Googlemap
źródło
Próbowałem wszystkich proponowanych rozwiązań, ale nic nie działało dla mnie, gdy wszystkie moje markery znajdowały się w grupie. W końcu po prostu umieszczam to:
Innymi słowy, jeśli zawijasz znaczniki w klastrze i chcesz usunąć wszystkie znaczniki, wywołujesz:
źródło
Masz na myśli usunięcie, jak je ukrywanie lub usuwanie?
jeśli ukrywasz:
jeśli chcesz je usunąć:
zauważ, że używam znaczników tablic do śledzenia ich i resetowania ręcznego.
źródło
Musisz ustawić mapę zerową na tym znaczniku.
źródło
Znalazłem proste rozwiązanie (myślę):
źródło
Używam stenografii, która dobrze sobie radzi. Po prostu zrób
źródło
jeśli korzystasz z wtyczki gmap V3:
$("#map").gmap("removeAllMarkers");
patrz: http://www.smashinglabs.pl/gmap/documentation#after-load
źródło
Wiem, że może to proste rozwiązanie, ale to właśnie robię
Działa za każdym razem dla mnie.
źródło