16

Estoy construyendo una aplicación web con Google Maps API, necesito ampliar un área sin problemas, así que uso setTimeout para aumentar el nivel de zoom cada segundo, pero en algún lugar con mala red, las imágenes del mapa se cargan demasiado lento que la página gire rápidamente a una página en blanco ....¿Cómo precargar algunas partes de google maps?

así que mi pregunta es ¿es posible cargar previamente una parte de Google Maps (zoom de 3 a 16 de un punto)

+0

Estoy teniendo el mismo problema. Desea que el cambio del nivel de zoom sea más suave ... – Flaudre

+1

@Flaudre ¿ha probado la solución de RASG? – wong2

+1

Quizás acercarse lentamente no es la mejor experiencia de usuario para usuarios con conexiones lentas? Incluso si precarga todos los datos, tendrán que esperar que se carguen muchas imágenes en algún momento – dpix

Respuesta

12

que probablemente podría pre- cargarlo en un div oculto o iframe.

pero debe asegurarse de que no está en contra de las Google Maps/Google Earth APIs Terms of Service

10.1.3 Las restricciones contra exportación de datos o copia.

(b) Sin captura previa, almacenamiento en caché o almacenamiento de contenido. No debe prearchivar, caché, ni almacenar ningún Contenido, excepto que puede almacenar: (i) cantidades limitadas de de Contenido con el fin de mejorar el rendimiento de Implementación de la API de Maps si lo hace de forma temporal, segura, y de una manera que no permite el uso del Contenido fuera del Servicio ; y (ii) cualquier identificador de contenido o clave que la documentación de las API de Maps le permita específicamente almacenar. Por ejemplo, debe no utilizar el contenido para crear una base de datos independiente de “lugares”.

+1

genial. un voto negativo sin ninguna explicación. – RASG

+0

Leyendo que parece que está bien precargarlo para mejorar el rendimiento. – dalore

+0

Parece que ToS no está en contra de la solución ofrecida por @RASG. ¡Así que sigue y no te preocupes! Amigo, ¡te respaldamos en cualquier tribunal! – NDFA

4

Hacer un poco de código

Acabo de crear un guión basado en los 5 años de edad idea por RASG. Vamos a crear un mapa oculto y cuando esté completamente cargado, acercarlo. Lo hacemos una y otra vez hasta que almacena en caché todos los zooms. El trabajo fiddle is here. He colocado una información div en la esquina superior derecha para ver cómo avanza el zoom.

// init the hidden map 
var mapOptions = { 
    center: new google.maps.LatLng(center.lat, center.lng), 
    zoom: minZoom + 1 
}; 
var preMap = new google.maps.Map(document.getElementById('map-canvas-hidden'), mapOptions); 

// when the current hidden map is fully loaded, zoom it in 
preMap.addListener('tilesloaded', function() { 
    $('#out').html('Zoom ' + preMap.getZoom() + ' preloaded'); 

    // if there is zoom to zoom-in, do it after some rest 
    if(preMap.getZoom() < maxZoom) { 
    setTimeout(function(){ 
     preMap.setZoom(preMap.getZoom() + 1); 
    }, 50); 
    } 
}); 

es lo que realmente almacenar en caché el mapa?

Bueno, borre la caché del navegador y abra el violín.

enter image description here

En actividad de la red del navegador podemos ver una gran cantidad de descarga de imágenes. Luego, acerca el mapa y observa la actividad nuevamente. Parece que todas las imágenes se cargan desde el caché.

enter image description here

espero que ayude.

+0

Puede calcular la velocidad de su zoom lento cuando las primeras dos cachés se obtienen. –

+0

muy bueno! +1 por ensuciarse las manos :) – RASG

+0

Hola ivan, muchas gracias por el esfuerzo. Revisé la página demasiado tarde para recompensar alguna recompensa. Espero que estés bien con un simple voto positivo. – Flaudre