Je mets plusieurs marqueurs sur ma carte et je peux définir statiquement les niveaux de zoom et le centre mais ce que je veux, c'est couvrir tous les marqueurs et zoomer autant que possible en ayant tous les marchés visibles
Les méthodes disponibles sont les suivantes
et
Ni setCenter
prend en charge plusieurs emplacements ou entrée de tableau d'emplacement, ni setZoom
ce type de fonctionnalité
javascript
google-maps-api-3
Trikaldarshi
la source
la source
latlng
à unbounds
objet chaque fois que vous ajoutez un marqueur et que votre carte correspond aux limites finales. Voir la réponse ici: stackoverflow.com/questions/1556921/…Réponses:
Vous devez utiliser la
fitBounds()
méthode.Documentation de developers.google.com/maps/documentation/javascript :
la source
getPosition
méthode?LatLngLiteral
au lieu d'avoir une instance de marqueur. par exemplebounds.extend({lat: 123, lng: 456})
.fitBounds(bounds, int)
ce qui vous permettra d'avoir un peu d'espace entre les marqueurs et les bords de la carte (ou moins d'espace si vous en avez besoin). Voir la documentationPour étendre la réponse donnée avec quelques astuces utiles:
MISE À JOUR:
D'autres recherches dans le sujet montrent que fitBounds () est un asynchrone et il est préférable de faire une manipulation Zoom avec un écouteur défini avant d'appeler Fit Bounds.
Merci @Tim, @ xr280xr, plus d'exemples sur le sujet: SO: setzoom-after-fitbounds
la source
addListenerOnce
onzoom_changed
pour régler le zoom une fois sa valeur initialisée.yourMap
,map
etthis
. C'est peut-être une bonne idée de le rendre plus cohérent.La taille du tableau doit être supérieure à zéro. Sinon, vous obtiendrez des résultats inattendus.
la source
Il y a cet
MarkerClusterer
utilitaire côté client disponible pour google map comme spécifié ici dans les articles pour développeurs Google Map , voici un bref aperçu de son utilisation:Il existe de nombreuses approches pour faire ce que vous avez demandé:
Vous pouvez les lire sur le lien fourni ci-dessus.
Marker Clusterer
utilise le clustering basé sur une grille pour regrouper tous les marqueurs souhaitant la grille. Le regroupement basé sur une grille fonctionne en divisant la carte en carrés d'une certaine taille (la taille change à chaque zoom), puis en regroupant les marqueurs dans chaque carré de la grille.Avant le clustering
Après le clustering
J'espère que c'est ce que vous cherchiez et que cela résoudra votre problème :)
la source