J'aime la solution de mrt (surtout quand on ne sait pas combien de points seront cartographiés ou ajustés), sauf qu'elle déplace le marqueur de sorte qu'il ne soit plus au centre de la carte. Je l'ai simplement étendu en ajoutant un point supplémentaire en soustrayant .01 à la latitude et à la longitude également, afin de garder le marqueur au centre. Ça fonctionne très bien, merci mrt!
// Ajuster la carte pour afficher tous les marqueurs
function fitToMarkers(markers) {
var bounds = new google.maps.LatLngBounds();
// Créer les limites à partir des marqueurs
for( var index in markers ) {
var latlng = markers[index].getPosition();
bounds.extend(latlng);
}
// Ne pas zoomer trop près sur un seul marqueur
if (bounds.getNorthEast().equals(bounds.getSouthWest())) {
var extendPoint1 = new google.maps.LatLng(bounds.getNorthEast().lat() + 0.01, bounds.getNorthEast().lng() + 0.01);
var extendPoint2 = new google.maps.LatLng(bounds.getNorthEast().lat() - 0.01, bounds.getNorthEast().lng() - 0.01);
bounds.extend(extendPoint1);
bounds.extend(extendPoint2);
}
map.fitBounds(bounds);
// Ajustement du zoom ici ne fonctionne pas :/
}
2 votes
stackoverflow.com/questions/4523023/… est une solution bien meilleure. En particulier, la réponse de @Nequins.