javascript - style - Come posso verificare se Google Maps è completamente caricato?




google maps marker jump (6)

Dove la variabile map è un oggetto di tipo GMap2:

    GEvent.addListener(map, "tilesloaded", function() {
      console.log("Map is fully loaded");
    });

Sto incorporando Google Maps nel mio sito web. Una volta caricato Google Maps, ho bisogno di avviare alcuni processi JavaScript.

C'è un modo per rilevare automaticamente quando Google Maps è completamente caricato, compresi i download di tessere e tutto?

tilesloaded() un metodo tilesloaded() che dovrebbe svolgere esattamente questa attività ma non funziona .



Puoi controllare il metodo GMap2.isLoaded() ogni millisecondi per vedere se la mappa e tutte le sue tessere sono state caricate ( window.setTimeout() o window.setInterval() sono i tuoi amici).

Anche se questo non ti darà l'esatto evento del completamento del caricamento, dovrebbe essere sufficiente per attivare il tuo Javascript.


Questo mi ha infastidito per un po 'con GMaps v3.

Ho trovato un modo per farlo in questo modo:

google.maps.event.addListenerOnce(map, 'idle', function(){
    // do something only the first time the map is loaded
});

L'evento "idle" viene attivato quando la mappa passa allo stato di inattività - tutto caricato (o non riuscito a caricare). L'ho trovato più affidabile di tilesloaded / bounds_changed e utilizzando il metodo addListenerOnce il codice nella chiusura viene eseguito la prima volta che "idle" viene attivato e quindi l'evento viene rimosso.

Vedi anche la sezione eventi nel Riferimento di Google Maps.


Se stai utilizzando l'API di Google Maps v3, questo è cambiato.

Nella versione 3, in sostanza, si desidera impostare un listener per l'evento bounds_changed , che verrà attivato al caricamento della mappa. Una volta attivato, rimuovere l'ascoltatore in quanto non si desidera essere informato ogni volta che cambiano i limiti di visualizzazione.

Questo potrebbe cambiare in futuro con l'evoluzione dell'API V3 :-)


Sto creando app per dispositivi mobili html5 e ho notato che gli eventi idle , bounds_changed e tilesloaded si tilesloaded quando l'oggetto della mappa viene creato e reso (anche se non è visibile).

Per fare in modo che la mia mappa esegua il codice quando viene mostrato per la prima volta, ho fatto quanto segue:

google.maps.event.addListenerOnce(map, 'tilesloaded', function(){
    //this part runs when the mapobject is created and rendered
    google.maps.event.addListenerOnce(map, 'tilesloaded', function(){
        //this part runs when the mapobject shown for the first time
    });
});




google-maps