Je dessine une série de marqueurs sur une carte (en utilisant la v3 des cartes api).Google Maps v3: Enforcing min. niveau de zoom lors de l'utilisation de fitBounds
Dans v2, j'avais le code suivant:
bounds = new GLatLngBounds();
... loop thru and put markers on map ...
bounds.extend(point);
... end looping
map.setCenter(bounds.getCenter());
var level = map.getBoundsZoomLevel(bounds);
if (level == 1)
level = 5;
map.setZoom(level > 6 ? 6 : level);
Et ce beau travail pour assurer qu'il y avait toujours un niveau de détail approprié affiché sur la carte.
Je suis en train de dupliquer cette fonctionnalité dans v3, mais le setZoom et fitBounds ne semblent pas coopérer:
... loop thru and put markers on the map
var ll = new google.maps.LatLng(p.lat,p.lng);
bounds.extend(ll);
... end loop
var zoom = map.getZoom();
map.setZoom(zoom > 6 ? 6 : zoom);
map.fitBounds(bounds);
J'ai essayé différentes permutations (déplacer les fitBounds avant la setZoom, pour exemple) mais rien de ce que je fais avec setZoom ne semble affecter la carte. Est-ce que je manque quelque chose? Y a-t-il un moyen de faire cela?
Merci! Je me bats avec ça depuis quelques heures! Cela semble pourtant être un bug. – chris
C'est une bonne méthode. Une autre méthode consiste à vérifier les limites actuelles et à étendre les limites, c'est-à-dire http://stackoverflow.com/questions/3334729/google-maps-v3-fitbounds-zoom-too-close-for-single-marker/5345708#5345708 . Bien que la réponse liée ici ne fasse qu'étendre les limites d'une fraction, vous pouvez utiliser la même méthode pour augmenter les limites d'un nombre plus grand; J'ai trouvé que l'ajout de 7 à tous les coins fait du bon travail. –
Ceci est une solution cool. J'ai remarqué, cependant, que cela fonctionne bien pour moi en chrome, c'est-à-dire, et firefox sans utiliser map.initialZoom. – Andrew