javascript - marcadores - google.maps.marker example
¿Cómo puedo comprobar si Google Maps está completamente cargado? (9)
Estoy incorporando Google Maps en mi sitio web. Una vez que se haya cargado Google Maps, debo iniciar algunos procesos de JavaScript.
¿Hay una manera de detectar automáticamente cuando Google Maps se ha cargado completamente, incluidas las descargas de mosaicos y todo?
Existe tilesloaded()
método tilesloaded()
que se supone que realiza exactamente esta tarea pero no funciona .
Donde el map
variables es un objeto de tipo GMap2:
GEvent.addListener(map, "tilesloaded", function() {
console.log("Map is fully loaded");
});
En 2018:
var map = new google.maps.Map(...)
map.addListener(''tilesloaded'', function () { ... })
https://developers.google.com/maps/documentation/javascript/events
En mi caso, la imagen de tilesloaded
cargada desde la URL remota y el evento de carga de tilesloaded
se activó antes de renderizar la imagen.
Resolví con el siguiente camino sucio.
var tileCount = 0;
var options = {
getTileUrl: function(coord, zoom) {
tileCount++;
return "http://posnic.com/tiles/?param"+coord;
},
tileSize: new google.maps.Size(256, 256),
opacity: 0.5,
isPng: true
};
var MT = new google.maps.ImageMapType(options);
map.overlayMapTypes.setAt(0, MT);
google.maps.event.addListenerOnce(map, ''tilesloaded'', function(){
var checkExist = setInterval(function() {
if ($(''#map_canvas > div > div > div:nth-child(1) > div:nth-child(1) > div:nth-child(1) > div:nth-child(2) > div > div'').length === tileCount) {
callyourmethod();
clearInterval(checkExist);
}
}, 100); // check every 100ms
});
Esto me molestó por un tiempo con GMaps v3.
Encontré una manera de hacerlo así:
google.maps.event.addListenerOnce(map, ''idle'', function(){
// do something only the first time the map is loaded
});
El evento "inactivo" se activa cuando el mapa pasa al estado inactivo: todo está cargado (o no se pudo cargar). Descubrí que es más confiable que los archivos con carga / límites_cambiado y utilizando el método addListenerOnce
, el código en el cierre se ejecuta la primera vez que se activa "inactivo" y luego se desconecta el evento.
Vea también la sección de eventos en la Referencia de Google Maps.
Estoy creando aplicaciones móviles html5 y me di cuenta de que los eventos idle
, bounds_changed
y con tilesloaded
bounds_changed
tilesloaded
cuando se crea y se representa el objeto del mapa (incluso si no está visible).
Para hacer que mi mapa ejecute el código cuando se muestra por primera vez, hice lo siguiente:
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
});
});
Puede comprobar el método GMap2.isLoaded()
cada n
milisegundos para ver si el mapa y todos sus mosaicos se cargaron ( window.setTimeout()
o window.setInterval()
son sus amigos).
Si bien esto no le dará el evento exacto de la finalización de la carga, debería ser lo suficientemente bueno para activar su Javascript.
Si está utilizando componentes web , tienen esto como ejemplo:
map.addEventListener(''google-map-ready'', function(e) {
alert(''Map loaded!'');
});
Si está utilizando la API de Maps v3, esto ha cambiado.
En la versión 3, esencialmente desea configurar una escucha para el evento de bounds_changed
, que se activará al cargar el mapa. Una vez que se haya activado, elimine el oyente ya que no desea que se le informe cada vez que cambien los límites de la ventana gráfica.
Esto puede cambiar en el futuro a medida que la API de V3 está evolucionando :-)
GMap2::tilesloaded()
sería el evento que estás buscando.
Ver GMap2.tilesloaded para referencias.