Tengo una página y un mapa de Google está dentro de un div oculto al principio. Luego muestro el div después de hacer clic en un enlace, pero solo aparece la parte superior izquierda del mapa.
Traté de ejecutar este código después del clic:
map0.onResize();
o:
google.maps.event.trigger(map0, 'resize')
algunas ideas. Aquí hay una imagen de lo que veo después de mostrar el div con el mapa oculto.
Respuestas:
Solo lo probé yo mismo y así es como lo enfoqué. Bastante sencillo, avíseme si necesita alguna aclaración
HTML
CSS
Javascript
fuente
Estaba teniendo el mismo problema y descubrí que cuando mostraba el div, llamaba
google.maps.event.trigger(map, 'resize');
y parece resolver el problema por mí.fuente
Si no tiene un mapa variable disponible, debería ser el primer elemento (a menos que haya hecho algo estúpido) en el
div
que contiene GMAP.fuente
Tenía un mapa de Google dentro de una pestaña Bootstrap, que no se mostraba correctamente. Esta fue mi solución.
fuente
'a[href="#profileTab"]'
astep-2
cuál es el nombre del DIV que contiene el mapa DIV.Cómo actualizar el mapa cuando cambias el tamaño de tu div
No basta con llamar.
google.maps.event.trigger(map, 'resize');
También debe restablecer el centro del mapa.Cómo escuchar el evento de cambio de tamaño
Angular (colapso ng-show o ui-bootstrap)
Vincula directamente a la visibilidad del elemento en lugar de al valor vinculado a ng-show, porque $ watch puede dispararse antes de que se actualice ng-show (por lo que el div seguirá siendo invisible).
jQuery .show ()
Use la devolución de llamada incorporada
Bootstrap 3 Modal
fuente
Si tiene un Google Map insertado copiando / pegando el código del iframe y no desea utilizar la API de Google Maps , esta es una solución fácil. Simplemente ejecute la siguiente línea de JavaScript cuando muestre el mapa oculto. Simplemente toma el código HTML del iframe y lo inserta en el mismo lugar, por lo que se vuelve a mostrar:
Versión de jQuery:
El HTML:
El siguiente ejemplo funciona para un mapa inicialmente oculto en una pestaña Bootstrap 3:
fuente
https://www.google.com/maps/embed/v1/place?..
También es posible activar el evento de cambio de tamaño de la ventana nativa.
Google Maps se recargará automáticamente:
fuente
Tuve el mismo problema, el
google.maps.event.trigger(map, 'resize')
no funcionaba para mí.Lo que hice fue poner un temporizador para actualizar el mapa después de poner visible el
div
...No sé si es la forma más conveniente de hacerlo, ¡pero funciona!
fuente
Con jQuery podrías hacer algo como esto. Esto me ayudó a cargar un mapa de Google en Umbraco CMS en una pestaña que no sería visible de inmediato.
fuente
Mi solución es muy simple y eficiente:
HTML
CSS
Jquery
fuente
O si usa gmaps.js , llame al:
cuando se muestra tu div.
fuente
Supongo que la pregunta original es con un mapa que se inicializa en un div oculto de la página. Resolví un problema similar cambiando el tamaño del mapa en el div oculto cuando el documento está listo, después de que se inicializa, independientemente de su estado de visualización. En mi caso, tengo 2 mapas, uno se muestra y otro está oculto cuando se inicializan y no quiero iniciar un mapa cada vez que se muestra. Es una publicación antigua, pero espero que ayude a cualquiera que esté buscando.
fuente
He encontrado que esto funciona para mí:
esconder:
mostrar:
fuente
Si se usa dentro de las pestañas Bootstrap v3, lo siguiente debería funcionar:
donde
tab-location
está la ID de la pestaña que contiene el mapa.fuente
Tal como lo han indicado John Doppelmann y HoffZ, junte todo el código de la siguiente manera en su función de visualización div o evento onclick:
Funcionó perfectamente para mí
fuente
Mi solución fue:
CSS:
jQuery:
fuente
No me gustó que el mapa se cargara solo después de que el div oculto se hiciera visible. En un carrusel, por ejemplo, eso realmente no funciona.
Esta es mi solución: agregar clase al elemento oculto para mostrarlo y ocultarlo con la posición absoluta, luego renderizar el mapa y eliminar la clase después de la carga del mapa.
Probado en Bootstrap Carrousel.
HTML
<div class="item loading"><div id="map-canvas"></div></div>
CSS
JS
fuente
use esta línea de códigos cuando quiera mostrar el mapa.
fuente
fuente
Primer comentario. Mi googleMap div estaba dentro de un contenedor div con {display: none} hasta que se hizo clic en la pestaña. Tenía el mismo problema que OP. Esto funcionó para mí:
Pegue este código dentro y al final de su código donde se hace clic en la pestaña div del contenedor y revela su div oculto. Lo importante es que su contenedor div debe ser visible antes de que se pueda llamar a initialize.
Probé una serie de soluciones propuestas aquí y otras páginas y no funcionaron para mí. Hazme saber si esto funciona para ti. Gracias.
fuente
Agregue este código antes del div o páselo a un archivo js:
Este evento se activará después de que se cargue el div, por lo que actualizará el contenido del mapa sin tener que presionar F5
fuente
Al mostrar el mapa, estoy geocodificando una dirección y luego configurando el centro de mapas. los
google.maps.event.trigger(map, 'resize');
no funcionó para mí.Tuve que usar un
map.setZoom(14);
Código a continuación:
fuente
fuente