Ich binde Google Maps in meine Website ein. Sobald Google Maps geladen ist, muss ich einige JavaScript-Prozesse starten.
Gibt es eine Möglichkeit, automatisch zu erkennen, wann Google Maps vollständig geladen wurde, einschließlich Kacheldownloads und allem?
Es tilesloaded()
gibt eine Methode, die genau diese Aufgabe erfüllen soll, aber nicht funktioniert .
javascript
html
google-maps
TRiG
quelle
quelle
google.maps.event.addListenerOnce(map, 'tilesloaded', function() {
Antworten:
Das hat mich eine Weile mit GMaps v3 gestört.
Ich habe einen Weg gefunden, es so zu machen:
Das Ereignis "Leerlauf" wird ausgelöst, wenn die Karte in den Ruhezustand wechselt - alles geladen (oder nicht geladen). Ich fand es zuverlässiger als tilesloaded / bounds_changed und unter Verwendung der
addListenerOnce
Methode wird der Code im Closure ausgeführt, wenn "idle" zum ersten Mal ausgelöst wird und dann das Ereignis getrennt wird.Siehe auch den Abschnitt "Ereignisse" in der Google Maps-Referenz.
quelle
Ich erstelle mobile HTML5-Apps und habe festgestellt, dass die und Ereignisse ausgelöst werden
idle
, wenn das Kartenobjekt erstellt und gerendert wird (auch wenn es nicht sichtbar ist).bounds_changed
tilesloaded
Damit meine Karte beim ersten Anzeigen Code ausführt, habe ich Folgendes getan:
quelle
Uncaught ReferenceError: map is not defined
. Ich habe versucht, das Skript mit Verzögerung und am Ende meiner anderen Skripte auszuführen, aber nichts scheint zu funktionieren.Wenn Sie die Maps API v3 verwenden, hat sich dies geändert.
In Version 3 möchten Sie im Wesentlichen einen Listener für das
bounds_changed
Ereignis einrichten , der beim Laden der Karte ausgelöst wird. Entfernen Sie nach dem Auslösen den Listener, da Sie nicht jedes Mal informiert werden möchten, wenn sich die Grenzen des Ansichtsfensters ändern.Dies kann sich in Zukunft ändern, wenn sich die V3-API weiterentwickelt :-)
quelle
tilesloaded
Veranstaltung.Im Jahr 2018:
https://developers.google.com/maps/documentation/javascript/events
quelle
Wenn Sie Webkomponenten verwenden , haben diese Folgendes als Beispiel:
quelle
GMap2::tilesloaded()
wäre das Ereignis, das Sie suchen.Referenzen finden Sie unter GMap2.tilesloaded .
quelle
Wo die Variable
map
ein Objekt vom Typ GMap2 ist:quelle
In meinem Fall wurde das von der Remote-URL und dem
tilesloaded
Ereignis geladene Kachelbild ausgelöst, bevor das Bild gerendert wurde.Ich löste mit folgendem schmutzigen Weg.
quelle
Sie können die
GMap2.isLoaded()
Methode allen
Millisekunden überprüfen , um festzustellen, ob die Karte und alle ihre Kacheln geladen wurden (window.setTimeout()
oderwindow.setInterval()
Ihre Freunde sind).Dies gibt Ihnen zwar nicht das genaue Ereignis des Ladevorgangs, sollte jedoch gut genug sein, um Ihr Javascript auszulösen.
quelle