Osadzam Mapy Google na mojej stronie internetowej. Po załadowaniu Map Google muszę uruchomić kilka procesów JavaScript.
Czy istnieje sposób automatycznego wykrywania, gdy Mapy Google są w pełni załadowane, w tym pliki do pobrania i inne?
Istnieje tilesloaded()
metoda, która ma wykonać dokładnie to zadanie, ale nie działa .
javascript
html
google-maps
Wymuskany
źródło
źródło
google.maps.event.addListenerOnce(map, 'tilesloaded', function() {
Odpowiedzi:
Trochę mnie to martwiło przez GMaps v3.
Znalazłem sposób na zrobienie tego w ten sposób:
Zdarzenie „bezczynności” jest uruchamiane, gdy mapa przechodzi w stan bezczynności - wszystko zostało załadowane (lub nie udało się załadować). Stwierdziłem, że jest bardziej niezawodny niż tileloaded / bounds_changed i przy użyciu
addListenerOnce
metody kod w zamknięciu jest wykonywany przy pierwszym uruchomieniu „bezczynności”, a następnie zdarzeniu jest odłączone.Zobacz także sekcję wydarzeń w Odwołaniu do Map Google.
źródło
Tworzę aplikacje mobilne HTML5 i zauważyłem, że
idle
,bounds_changed
itilesloaded
ogień zdarzenia, gdy obiekt jest tworzony i mapa renderowane (nawet jeśli nie jest widoczny).Aby mój kod działał na mapie, gdy jest wyświetlany po raz pierwszy, wykonałem następujące czynności:
źródło
Uncaught ReferenceError: map is not defined
. Próbowałem uruchomić skrypt z opóźnieniem i na końcu innych moich skryptów, ale wydaje się, że nic nie działa.Jeśli korzystasz z Maps API v3, to się zmieniło.
W wersji 3 zasadniczo chcesz skonfigurować detektor
bounds_changed
zdarzenia, który zostanie uruchomiony po załadowaniu mapy. Gdy to się uruchomi, usuń nasłuchiwanie, ponieważ nie chcesz być informowany za każdym razem, gdy zmieniają się granice okienka ekranu.Może się to zmienić w przyszłości wraz z rozwojem API V3 :-)
źródło
tilesloaded
wydarzenia.W 2018 r .:
https://developers.google.com/maps/documentation/javascript/events
źródło
Jeśli używasz komponentów internetowych , mają one jako przykład:
źródło
GMap2::tilesloaded()
będzie to wydarzenie, którego szukasz.Zobacz GMap2.tilesloaded o referencje.
źródło
Jeżeli zmienna
map
jest obiektem typu GMap2:źródło
W moim przypadku obraz płytki jest ładowany ze zdalnego adresu URL i
tilesloaded
zdarzenie zostały uruchomione przed renderowaniem obrazu.Rozwiązałem z podążaniem brudną drogą.
źródło
Możesz sprawdzać
GMap2.isLoaded()
metodę con
milisekundę, aby sprawdzić, czy mapa i wszystkie jej kafelki zostały załadowane (window.setTimeout()
lub czywindow.setInterval()
są Twoimi przyjaciółmi).Chociaż nie da to dokładnego zdarzenia zakończenia ładowania, powinno wystarczyć do uruchomienia Javascript.
źródło