W mojej witrynie używam Google Maps API v3 do umieszczania znaczników domów na mapie.
Okno InfoWindows pozostanie otwarte, chyba że wyraźnie klikniesz ikonę zamykania. Oznacza to, że możesz mieć otwarte 2+ okna InfoWindows naraz, jeśli najedziesz kursorem na znacznik mapy.
Pytanie : Jak sprawić, by otwarte było tylko bieżące aktywne okno InfoWindow, a wszystkie inne okna były zamknięte? Czyli nie więcej niż 1 okno InfoWindow będzie otwarte jednocześnie?
javascript
google-maps
google-maps-api-3
Przetrząsać
źródło
źródło
Odpowiedzi:
W InfoWindows istnieje funkcja close () . Po prostu śledź ostatnio otwarte okno i wywołaj w nim funkcję zamykania, gdy zostanie utworzone nowe okno.
To demo ma funkcjonalność, której szukasz. Znalazłem to w galerii demonstracyjnej Maps API V3 .
źródło
alternatywne rozwiązanie z użyciem wielu okien infowindow: zapisz poprzednie otwarte okno w zmiennej, a następnie zamknij je po otwarciu nowego okna
źródło
Spowoduje to „przeniesienie” okna informacyjnego do każdego klikniętego znacznika, w efekcie jego zamknięcie, a następnie ponowne otwarcie (i przesunięcie w celu dopasowania do widocznego obszaru) w nowej lokalizacji. Zmienia swoją zawartość przed otwarciem, aby uzyskać pożądany efekt. Działa dla znaczników n.
źródło
Moje rozwiązanie.
źródło
Z tego linku http://www.svennerberg.com/2009/09/google-maps-api-3-infowindows/ :
źródło
źródło
Jest łatwiejszy sposób niż użycie funkcji close (). jeśli utworzysz zmienną z właściwością InfoWindow, zamknie się ona automatycznie po otwarciu innej.
źródło
źródło
Co powiesz na -
Następnie możesz po prostu najechać na niego, a sam się zamknie.
źródło
Zapisałem zmienną u góry, aby śledzić, które okno informacyjne jest obecnie otwarte, patrz poniżej.
źródło
Oto czego użyłem, jeśli używasz wielu znaczników w pętli for (tutaj Django). Możesz ustawić indeks dla każdego znacznika i ustawiać go za każdym razem, gdy otwierasz okno. Zamknięcie zapisanego wcześniej indeksu:
źródło
źródło