Ich setze mehrere Markierungen auf meiner Karte und kann die Zoomstufen und die Mitte statisch einstellen. Ich möchte jedoch, dass alle Markierungen abgedeckt und so weit wie möglich gezoomt werden, damit alle Märkte sichtbar sind
Folgende Methoden stehen zur Verfügung
und
setCenter
Unterstützt weder die Eingabe mehrerer Standorte oder Standortarrays noch setZoom
verfügt diese Art von Funktionalität
javascript
google-maps-api-3
Trikaldarshi
quelle
quelle
latlng
zu einembounds
Objekt jedes Mal , wenn Sie eine Markierung hinzufügen und Ihre Karte die endgültigen Grenzen passen. Sehen Sie die Antwort hier: stackoverflow.com/questions/1556921/…Antworten:
Sie müssen die
fitBounds()
Methode verwenden.Dokumentation von developer.google.com/maps/documentation/javascript :
quelle
getPosition
Methode?LatLngLiteral
statt einer Marker-Instanz übergeben. zB ,bounds.extend({lat: 123, lng: 456})
.fitBounds(bounds, int)
Sie einen kleinen Abstand zwischen den Markierungen und den Kartenrändern verwenden (oder bei Bedarf weniger Platz). Siehe DokumentationSo erweitern Sie die gegebene Antwort mit wenigen nützlichen Tricks:
UPDATE:
Weitere Untersuchungen im Thema zeigen, dass fitBounds () asynchron ist und es am besten ist, die Zoom-Manipulation mit einem definierten Listener durchzuführen, bevor Fit Bounds aufgerufen wird.
Danke @Tim, @ xr280xr, weitere Beispiele zum Thema: SO: setzoom-after-fitbounds
quelle
addListenerOnce
onzoom_changed
den Zoom eingestellt habe, nachdem sein Wert initialisiert wurde.yourMap
,map
undthis
. Vielleicht ist es eine gute Idee, es konsistenter zu machen.Die Größe des Arrays muss größer als Null sein. Andernfalls erhalten Sie unerwartete Ergebnisse.
quelle
Es gibt dieses
MarkerClusterer
clientseitige Dienstprogramm für Google Map, wie hier in den Artikeln des Google Map-Entwicklers angegeben. Hier finden Sie eine kurze Beschreibung der Verwendung:Es gibt viele Ansätze, um das zu tun, wonach Sie gefragt haben:
Sie können darüber unter dem oben angegebenen Link lesen.
Marker Clusterer
verwendet Grid Based Clustering, um alle Marker zu gruppieren, die das Grid wünschen. Beim gitterbasierten Clustering wird die Karte in Quadrate einer bestimmten Größe unterteilt (die Größe ändert sich bei jedem Zoom) und anschließend die Markierungen in jedem Gitterquadrat gruppiert.Vor dem Clustering
Nach dem Clustering
Ich hoffe das ist was du gesucht hast und das wird dein Problem lösen :)
quelle