J'ai un Google Maps (V3) dans ma page à 100% de largeur de page avec un marqueur au milieu. Lorsque je redimensionne la largeur de la fenêtre de mon navigateur, j'aimerais que la carte reste centrée (responsive). Maintenant, la carte reste simplement sur le côté gauche de la page et devient plus petite.
MISE À JOUR Je l'ai fait fonctionner exactement comme décrit grâce à duncan. Voici le code final:
var center;
function calculateCenter() {
center = map.getCenter();
}
google.maps.event.addDomListener(map, 'idle', function() {
calculateCenter();
});
google.maps.event.addDomListener(window, 'resize', function() {
map.setCenter(center);
});
javascript
google-maps
google-maps-api-3
Gregory Bolkenstijn
la source
la source
center
n'est pas nécessaire d'être mondial. Fournircenter
(etcalculateCenter
) sont dans la même portée quemap
, alors tout devrait fonctionner. Bien sûr, simap
c'est global, vous devrez également résoudre ce problème :)Réponses:
Vous devez disposer d'un écouteur d'événements pour le redimensionnement de la fenêtre. Cela a fonctionné pour moi (mettez-le dans votre fonction d'initialisation):
la source
var center; google.maps.event.addListener(map, 'center_changed', function() { center = map.getCenter(); }); google.maps.event.addDomListener(window, 'resize', function() { map.setCenter(center); });
ça ne marche pas. Toute aide serait appréciée.Détecte l'événement de redimensionnement du navigateur, redimensionne la carte Google tout en préservant le point central:
Vous pouvez utiliser le même code dans d'autres gestionnaires d'événements lors du redimensionnement de la carte google par d'autres moyens (par exemple avec un contrôle «redimensionnable» jQuery-UI).
Source: http://hsmoore.com/blog/keep-google-map-v3-centered-when-browser-is-resized/ crédit à @smftre pour le lien.
Remarque: Ce code était lié au commentaire de @ smftre sur la réponse acceptée. Je pense que cela vaut la peine de l'ajouter comme sa propre réponse car elle est vraiment supérieure à la réponse acceptée. Il élimine le besoin d'une variable globale pour suivre le point central et d'un gestionnaire d'événements pour mettre à jour cette variable.
la source
google.maps.event.trigger(map, "resize");
?Quelques bons exemples sur w3schools.com. J'ai utilisé ce qui suit et cela fonctionne très bien.
http://www.w3schools.com/googleapi/google_maps_events.asp
la source
html: créez un div avec un identifiant de votre choix
js: créez une carte et attachez-la au div que vous venez de créer
Centrer lorsque la fenêtre est redimensionnée
la source
Mise à jour de la solution ci-dessus vers es6.
la source
addDomListener
fois lewindow
, qui est un élément DOM, et lemap
, qui ne l'est pas. L'objet map doit utiliser legoogle.maps.event.addListener
ou son propremap.addListener
gestionnaire d'événements.