J'ai une carte Google Maps (V3) à 100% de la largeur de la page, avec un marqueur au milieu. Lorsque je redimensionne la largeur de la fenêtre de mon navigateur, je souhaite que la carte reste centrée (responsive). Maintenant, la carte reste à gauche de la page et devient plus petite.
UPDATEObtenir pour qu'il fonctionne exactement comme décrit grâce à duncan. C'est 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);
});
Vous devez disposer d'un écouteur d'événements lorsque la fenêtre est redimensionnée. Cela a fonctionné pour moi (mettez-le dans votre fonction d'initialisation):
google.maps.event.addDomListener(window, 'resize', function() {
map.setCenter(center);
});
Détecter l'événement de redimensionnement du navigateur, redimensionne la carte Google tout en préservant le point central:
var map = ...; // your map initialisation code
google.maps.event.addDomListener(window, "resize", function() {
var center = map.getCenter();
google.maps.event.trigger(map, "resize");
map.setCenter(center);
});
Vous pouvez utiliser le même code dans d'autres gestionnaires d'événements lorsque vous redimensionnez la carte Google par d'autres moyens (par exemple, avec un contrôle 'redimensionnable' de jQuery-UI).
Source: http://hsmoore.com/blog/keep-google-map-v3-centered-when-browser-is-resized/ crédit à @smftre pour le lien.
Note: Ce code était lié dans le commentaire de @ smftre sur la réponse acceptée. Je pense que cela vaut la peine de l’ajouter à sa propre réponse car elle est vraiment supérieure à la réponse acceptée. Cela élimine le besoin d'une variable globale pour suivre le point central et d'un gestionnaire d'événements pour mettre à jour cette variable.
Quelques bons exemples sur w3schools.com. J'ai utilisé ce qui suit et cela fonctionne très bien.
google.maps.event.addDomListener(window, 'resize', function() {
map.panTo(myLatlng);
});
html: Créer une div avec un identifiant de votre choix
<div id="map"></div>
js: Créez une carte et attachez-la à la div que vous venez de créer
var map = new google.maps.Map(document.getElementById('map'), {
zoom: 16,
center: new google.maps.LatLng(-33.890542, 151.274856)
});
Centrer lorsque la fenêtre se redimensionne
var center = map.getCenter();
google.maps.event.addDomListener(window, 'resize', function() {
map.setCenter(center);
});
Mise à jour de la solution ci-dessus à es6.
let center;
const addMapListener = google.maps.event.addDomListener;
addMapListener(map, 'idle', () => center = map.getCenter());
addMapListener(window, 'resize', () => map.setCenter(center));