¿Cómo cambio el tamaño de un mapa de Google con JavaScript después de que se haya cargado?
105
Tengo un div 'mapwrap' configurado en 400px x 400px y dentro de eso tengo un 'mapa' de Google configurado en 100% x 100%. Entonces, el mapa se carga a 400 x 400px, luego con JavaScript cambio el tamaño del 'mapwrap' al 100% x 100% de la pantalla; el mapa de Google cambia de tamaño a toda la pantalla como esperaba, pero los mosaicos comienzan a desaparecer antes del borde derecho del página.
¿Existe una función simple a la que pueda llamar para hacer que el mapa de Google se reajuste al div 'mapwrap' de mayor tamaño?
Esta respuesta ha estado aquí durante mucho tiempo, por lo que una pequeña demostración podría valer la pena y, aunque usa jQuery, no hay una necesidad real de hacerlo.
$(function(){var mapOptions ={
zoom:8,
center:new google.maps.LatLng(-34.397,150.644)};var map =new google.maps.Map($("#map-canvas")[0], mapOptions);// listen for the window resize event & trigger Google Maps to update too
$(window).resize(function(){// (the 'map' here is the result of the created 'var map = ...' above)
google.maps.event.trigger(map,"resize");});});
html,
body {height:100%;}#map-canvas {min-width:200px;width:50%;min-height:200px;height:80%;border:1px solid blue;}
<scriptsrc="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script><scriptsrc="https://maps.googleapis.com/maps/api/js?v=3.exp&dummy=.js"></script>
Google Maps resize demo
<divid="map-canvas"></div>
Con una nueva versión de renderizador en la versión 3.32 de la API de JavaScript de Maps, el evento de cambio de tamaño ya no forma parte de la Mapclase.
La documentación dice
Cuando se cambia el tamaño del mapa, el centro del mapa se fija
El control de pantalla completa ahora conserva el centro.
Ya no es necesario activar el evento de cambio de tamaño manualmente.
El mapa no cambiaría de tamaño después de llamar a esto, hasta que lo envolví con un setTimeout. Encontré esa solución aquí (vea el comentario # 46).
Tyler Collier
Esta respuesta debe elegirse teniendo en cuenta que v2 ahora está en desuso. @Tyler Collier, este evento desencadenante es para notificar al mapa que tiene que volver a pintarse. Es posible que esté cambiando el tamaño de un contenedor oculto, en cuyo caso, sí, un alejamiento y un acercamiento funcionarían en un tiempo de espera.
Schien
8
La respuesta popular google.maps.event.trigger(map, "resize");no funcionó solo para mí.
Aquí había un truco que aseguraba que la página se había cargado y que el mapa también se había cargado. Al configurar un oyente y escuchar el estado inactivo del mapa, puede llamar al activador del evento para cambiar el tamaño.
Parece que esto es para mapas v2. El póster original preguntaba sobre mapas v3. Las dos API no parecen ser compatibles.
JoshuaD
Ese vínculo desencadena una amenaza detectada.
intotecho
1
Esto es mejor, hará el trabajo hecho. Cambiará el tamaño de su mapa. Ya no es necesario inspeccionar el elemento para cambiar el tamaño de su mapa. Lo que hace, activará automáticamente el evento de cambio de tamaño.
En primer lugar, gracias por orientarme y cerrar este tema. Encontré una manera de solucionar este problema en sus discusiones. Sí, vayamos al grano. Lo que pasa es que estoy usando el asistente GoogleMapHelper v3 en CakePHP3. Cuando intenté abrir la ventana emergente modal de bootstrap, me sorprendió el problema del cuadro gris sobre el mapa. Se ha extendido por 2 días. Finalmente conseguí una solución a esto.
Necesitamos actualizar GoogleMapHelper para solucionar el problema
Necesita agregar el siguiente script en la función setCenterMap
google.maps.event.trigger({$id}, \"resize\");
Y necesita incluir el siguiente código en JavaScript
La respuesta popular
google.maps.event.trigger(map, "resize");
no funcionó solo para mí.Aquí había un truco que aseguraba que la página se había cargado y que el mapa también se había cargado. Al configurar un oyente y escuchar el estado inactivo del mapa, puede llamar al activador del evento para cambiar el tamaño.
Esta fue mi respuesta que funcionó para mí.
fuente
Map -in-a-box de Wolfgang Pichler ofrece
fuente
Esto es mejor, hará el trabajo hecho. Cambiará el tamaño de su mapa. Ya no es necesario inspeccionar el elemento para cambiar el tamaño de su mapa. Lo que hace, activará automáticamente el evento de cambio de tamaño.
fuente
En primer lugar, gracias por orientarme y cerrar este tema. Encontré una manera de solucionar este problema en sus discusiones. Sí, vayamos al grano. Lo que pasa es que estoy usando el asistente GoogleMapHelper v3 en CakePHP3. Cuando intenté abrir la ventana emergente modal de bootstrap, me sorprendió el problema del cuadro gris sobre el mapa. Se ha extendido por 2 días. Finalmente conseguí una solución a esto.
Necesitamos actualizar GoogleMapHelper para solucionar el problema
Necesita agregar el siguiente script en la función setCenterMap
Y necesita incluir el siguiente código en JavaScript
fuente