Je suis nouveau chez JS, et j'ai trouvé la réponse à une question précédente, qui a soulevé une nouvelle question, qui m'a amené à nouveau ici.
J'ai un Reveal Modal qui contient une API Google Map. Quand un bouton est cliqué, le Reveal Modal apparaît et affiche la carte Google. Mon problème est que seul un tiers de la carte s'affiche. En effet, un déclencheur de redimensionnement doit être implémenté. Ma question est de savoir comment implémenter google.maps.event.trigger (carte, "redimensionner")? Où dois-je placer ce petit extrait de code?
Voici mon site de test. Cliquez sur le bouton Google Map pour voir le problème à portée de main. http://simplicitdesignanddevelopment.com/Fannie%20E%20Zurb/foundation/contact_us.html#
Le script Reveal Model:
<script type="text/javascript">
$(document).ready(function() {
$('#myModal1').click(function() {
$('#myModal').reveal();
});
});
</script>
Mon script Google Map:
<script type="text/javascript">
function initialize() {
var mapOptions = {
center: new google.maps.LatLng(39.739318, -89.266507),
zoom: 5,
mapTypeId: google.maps.MapTypeId.ROADMAP
};
var map = new google.maps.Map(document.getElementById("map_canvas"),
mapOptions);
}
</script>
Le div qui détient la carte Google:
<div id="myModal" class="reveal-modal large">
<h2>How to get here</h2>
<div id="map_canvas" style="width:600px; height:300px;"></div>
<a class="close-reveal-modal">×</a>
</div>
MISE À JOUR 2018-05-22
Avec une nouvelle version du rendu dans la version 3.32 de l'API Maps Maps, l'événement resize ne fait plus partie de la classe Map
.
La documentation indique
Lorsque la carte est redimensionnée, le centre de la carte est fixe
Le contrôle plein écran conserve désormais le centre.
Il n'est plus nécessaire de déclencher l'événement de redimensionnement manuellement.
source: https://developers.google.com/maps/documentation/javascript/new-renderer
google.maps.event.trigger(map, "resize");
n'a aucun effet à partir de la version 3.32
Il y avait en fait quelques problèmes avec votre code source.
initialize()
est créée, mais jamais appelée$(document).ready
doit être appelée après le chargement de jQuerymap
doit être une variable globale (comme l'a dit @Cristiano Fontes) et non un var map
click
n'est jamais appelé. Vous essayez de combiner les deux méthodes Reveal from Zurb permet d'ouvrir une boîte de dialogue (une avec JS, une avec seulement HTML). Vous devez utiliser la seule méthode JS.#myModal1
n'est jamais situé dans le HTML).Et maintenant: Téléchargez la solution (Veuillez nous fournir un téléchargement/JSFiddle la prochaine fois, donc nous n'avons pas besoin de le créer nous-mêmes).
J'espère que cela a aidé!
Ajoutez-le simplement ici
<script type="text/javascript">
$(document).ready(function() {
$('#myModal1').click(function() {
$('#myModal').reveal();
google.maps.event.trigger(map, 'resize');
});
});
</script>
MAIS vous devez mettre la carte en tant que variable globale, alors perdez la var ici
<script type="text/javascript">
function initialize() {
var mapOptions = {
center: new google.maps.LatLng(39.739318, -89.266507),
zoom: 5,
mapTypeId: google.maps.MapTypeId.ROADMAP
};
--> map = new google.maps.Map(document.getElementById("map_canvas"),
mapOptions);
}
</script>
google.maps.event.addListenerOnce(map, 'tilesloaded', function() {
google.maps.event.addListenerOnce(map, 'tilesloaded', function() {
google.maps.event.trigger(map, 'resize');
});
});
N'a pas trouvé comment laisser un commentaire pour la dernière réponse, mais +1 pour Cristiano Fontes aide! Ça a marché. Dans mon cas:
<script type="text/javascript">
$('div.map-box').hide();
$('li.map').mouseover(function(){
$('div.map-box').show();
google.maps.event.trigger(map, 'resize');
});
</script>