J'ai une page et une carte google est dans un div caché au début. J'affiche ensuite le div après avoir cliqué sur un lien, mais seul le coin supérieur gauche de la carte apparaît.
j'ai essayé de faire exécuter ce code après le clic:
map0.onResize();
ou:
google.maps.event.trigger(map0, 'resize')
des idées. voici une image de ce que je vois après avoir montré le div avec la carte cachée.
Réponses:
Je viens de le tester moi-même et voici comment je l'ai abordé. Assez simple, faites-moi savoir si vous avez besoin de clarification
HTML
CSS
Javascript
la source
J'avais le même problème et j'ai découvert que lorsque vous montrez le div, appelez
google.maps.event.trigger(map, 'resize');
et cela semble résoudre le problème pour moi.la source
Si vous n'avez pas de
div
table de variables disponible, ce devrait être le premier élément (à moins que vous n'ayez fait quelque chose de stupide) dans le contenant GMAP.la source
J'avais une carte Google dans un onglet Bootstrap, qui ne s'affichait pas correctement. C'était ma solution.
la source
'a[href="#profileTab"]'
à cestep-2
qui est le nom de la DIV contenant la carte DIV.Comment actualiser la carte lorsque vous redimensionnez votre div
Il ne suffit pas d'appeler
google.maps.event.trigger(map, 'resize');
Vous devez également réinitialiser le centre de la carte.Comment écouter l'événement de redimensionnement
Angulaire (ng-show ou ui-bootstrap collapse)
Liez directement à la visibilité de l'élément plutôt qu'à la valeur liée à ng-show, car $ watch peut se déclencher avant que le ng-show ne soit mis à jour (ainsi le div sera toujours invisible).
jQuery .show ()
Utilisez le rappel intégré
Bootstrap 3 Modal
la source
Si vous avez inséré une carte Google Map en copiant / collant le code iframe et que vous ne souhaitez pas utiliser l'API Google Maps , c'est une solution simple. Exécutez simplement la ligne javascript suivante lorsque vous affichez la carte masquée. Il prend juste le code HTML iframe et l'insère au même endroit, donc il restitue:
Version jQuery:
Le HTML:
L'exemple suivant fonctionne pour une carte initialement masquée dans un onglet Bootstrap 3:
la source
https://www.google.com/maps/embed/v1/place?..
Il est également possible de simplement déclencher l'événement de redimensionnement de la fenêtre native.
Google Maps se rechargera automatiquement:
la source
J'ai eu le même problème, le
google.maps.event.trigger(map, 'resize')
ne fonctionnait pas pour moi.Ce que j'ai fait, c'est de mettre un minuteur pour mettre à jour la carte après avoir mis le
div
...Je ne sais pas si c'est la façon la plus pratique de le faire mais ça marche!
la source
Avec jQuery, vous pouvez faire quelque chose comme ça. Cela m'a aidé à charger une carte Google dans le CMS Umbraco sur un onglet qui ne serait pas visible tout de suite.
la source
Ma solution est très simple et efficace:
HTML
CSS
Jquery
la source
Ou si vous utilisez gmaps.js , appelez:
lorsque votre div est affiché.
la source
Je suppose que la question originale concerne une carte qui est activée dans un div caché de la page. J'ai résolu un problème similaire en redimensionnant la carte dans le div caché lorsque le document est prêt, après son initialisation, quel que soit son état d'affichage. Dans mon cas, j'ai 2 cartes, une est affichée et une est cachée lorsqu'elles sont initialisées et je ne veux pas initialiser une carte à chaque fois qu'elle est affichée. C'est un ancien post, mais j'espère qu'il aidera tous ceux qui le recherchent.
la source
J'ai trouvé que cela fonctionnait pour moi:
cacher:
montrer:
la source
S'il est utilisé dans les onglets Bootstrap v3, les éléments suivants devraient fonctionner:
où
tab-location
est l'ID de l'onglet contenant la carte.la source
Tout comme John Doppelmann et HoffZ l'ont indiqué, rassemblez tout le code comme suit dans votre fonction d'affichage div ou événement onclick:
Cela a parfaitement fonctionné pour moi
la source
Ma solution était:
CSS:
jQuery:
la source
Je n'aimais pas que la carte se charge uniquement après que le div caché soit devenu visible. Dans un carrousel, par exemple, cela ne fonctionne pas vraiment.
Ma solution consiste à ajouter une classe à l'élément caché pour l'afficher et à le masquer avec une position absolue à la place, puis à rendre la carte et à supprimer la classe après le chargement de la carte.
Testé dans Bootstrap Carousel.
HTML
<div class="item loading"><div id="map-canvas"></div></div>
CSS
JS
la source
utilisez cette ligne de codes lorsque vous souhaitez afficher la carte.
la source
la source
Premier poste. Mon div googleMap était dans un div conteneur avec {display: none} jusqu'au clic sur l'onglet. Eu le même problème que OP. Cela a fonctionné pour moi:
Collez ce code à l'intérieur et à la fin de votre code là où votre onglet de conteneur div est cliqué et révèle votre div caché. L'important est que votre conteneur div doit être visible avant que initialize puisse être appelé.
J'ai essayé un certain nombre de solutions proposées ici et d'autres pages et elles n'ont pas fonctionné pour moi. Faites-moi savoir si cela fonctionne pour vous. Merci.
la source
Ajoutez ce code avant le div ou passez-le dans un fichier js:
Cet événement sera déclenché après le chargement du div afin de rafraîchir le contenu de la carte sans avoir à appuyer sur F5
la source
Après avoir montré la carte, je géocoder une adresse puis définir le centre des cartes. Le
google.maps.event.trigger(map, 'resize');
n'a pas fonctionné pour moi.J'ai dû utiliser un
map.setZoom(14);
Code ci-dessous:
la source
la source