Gibt es eine Möglichkeit, eine maximale Zoomstufe für festzulegen fitBounds()
? Mein Problem ist, dass wenn die Karte nur an einem Ort gespeist wird, sie so weit wie möglich vergrößert wird, wodurch die Karte wirklich aus dem Kontext gerissen und unbrauchbar wird. Vielleicht gehe ich falsch vor?
Danke im Voraus!
google-maps
fitbounds
Codey W.
quelle
quelle
Antworten:
Ich mag die Lösung von mrt (besonders wenn Sie nicht wissen, wie viele Punkte Sie zuordnen oder anpassen werden), außer dass sie den Marker abwirft, sodass er nicht mehr in der Mitte der Karte liegt. Ich habe es einfach um einen zusätzlichen Punkt erweitert, der auch 0,01 von lat und lng subtrahiert, damit der Marker in der Mitte bleibt. Funktioniert super, danke mrt!
quelle
fitBounds()
Methode nicht zuverlässig angepasst werden kann , ist, dass der Zoom asynchron erfolgt: stackoverflow.com/questions/2989858/…Sie können Ihre Karte mit
maxZoom
in derMapOptions
(API-Referenz) wie folgt einrichten :Dies würde verhindern, dass die Karte bei Verwendung tiefer zoomt,
fitBounds()
und sogar die Zoomstufen aus der Zoomsteuerung entfernen.quelle
maxZoom
bevor Sie die Grenzen anpassen, und es dann erneut deaktivieren, indem Siemap.setOptions({ maxZoom: undefined })
dasidle
Ereignis verwenden, indem Sie die Grenzen ändern. Dies verhindert das Vergrößern und Verkleinern, indem stattdessen das Vergrößern desidle
Ereignisses zurückgesetzt wird.Eine andere Lösung besteht darin, Grenzen zu erweitern, wenn Sie feststellen, dass sie zu klein sind, bevor Sie fitBounds () ausführen:
quelle
Die Verwendung der MaxZoom-Option funktioniert am besten, wenn Sie nicht zoomen, um sich den Markierungen zu nähern, die Sie haben.
quelle
Sobald Sie alle realen Grenzen hinzugefügt haben, fügen Sie diese Linien hinzu
Es erhält das Zentrum der realen Grenzen und fügt dann zwei zusätzliche Punkte hinzu, einen im Nordosten und einen im Südwesten Ihres Zentrums
Dadurch wird der minimale Zoom effektiv eingestellt und der Versatzwert geändert, um den Zoom zu erhöhen oder zu verringern
quelle
Wenn es sich um einen einzelnen Speicherort handelt, können Sie stattdessen setCenter () und setZoom () verwenden.
quelle
du kannst benutzen
Auf diese Weise legen Sie die Eigenschaften der Karte fest, nachdem die Karte initialisiert wurde. Sie können sie so oft festlegen, wie Sie möchten. In Ihrem Fall können Sie sie jedoch vor fitBounds () festlegen.
Viel Glück, Rarutu
quelle
Ich verhindere, dass die Karte zu weit vergrößert wird, indem ich folgende Codezeile hinzufüge:
Direkt nach dieser Zeile:
Sie können die Zoomstufe jederzeit auf die Stufe ändern, an der die Karte nicht vorbeizoomen soll.
Wenn Sie Probleme oder Fragen haben, hinterlassen Sie mir einfach einen Kommentar zu dem Blog-Beitrag, den ich dazu unter http://icode4you.net/creating-your-own-store-locator-map-how-to-prevent-the- geschrieben habe. Karte-vom-Zoomen-zu-nah-auf-einen-einzelnen-Marker
quelle
Ich mag die Lösung von mrt sehr und sie funktioniert perfekt, wenn Sie immer nur einen Punkt haben, mit dem Sie arbeiten können. Ich habe jedoch festgestellt, dass, wenn der Begrenzungsrahmen nicht auf einem Punkt basiert, die Punkte jedoch sehr nahe beieinander liegen, die Karte dennoch zu weit vergrößert werden kann.
Hier erfahren Sie zunächst, ob die Punkte innerhalb eines definierten Abstands voneinander liegen. Wenn sie dann kleiner als dieser Mindestabstand sind, erweitern Sie die Grenzen um diesen Mindestabstand:
Hoffe das hilft jemandem!
quelle
Dies gibt Ihnen eine direkte Kontrolle über die maximal zulässige Vergrößerung der Grenzen.
quelle
Was mich betrifft, löse ich es, indem ich nach fitBounds ein Leerlaufereignis erstelle. Perfekt funktionieren. Ich denke, das ist eine der saubersten Lösungen hier
quelle
Ich habe mit diesem Block gelöst, da Google Maps V3 ereignisgesteuert ist:
Sie können die API anweisen, den Zoom auf einen angemessenen Wert zurückzusetzen, wenn das Ereignis zoom_changed ausgelöst wird :
Ich habe anfänglich dafür gesorgt, dass die Karte nicht zu stark gezoomt wird, wenn die eventuellen fitBounds durchlässig sind. Ohne sie wäre ein Zoomereignis über 11 für den Benutzer unmöglich.
quelle
fitBounds()
Versuchen Sie nach dem Aufrufen der Methode erneut, die Zoomstufe einzurichten. Dadurch wird die Karte auf diese Zoomstufe gebracht, während sie an der richtigen Stelle zentriert ist.quelle
Ich habe eine Soulution basierend auf der Begrenzung des maximalen Zooms beim Anpassen von Grenzen. Funktioniert für mich (getestet unter Win 7 - IE 9, FF 13, Chrome 19):
quelle
Und ... hier ist noch einer.
Gleiche Idee wie Herr und Ryan, aber
(*) Hinweis: Wenn die Box bereits groß genug ist, sollte das Hinzufügen dieser beiden zusätzlichen Punkte keine Auswirkung haben. Wir brauchen also keine weitere Überprüfung.
EDIT: Ich bin nicht genau sicher, ob meine Verhältnisberechnung korrekt ist, wenn man bedenkt, dass wir eine Mercator-Projektion haben. Ich könnte dies erneut bearbeiten.
quelle
Es ist bereits hier beantwortet Google Maps v3: Durchsetzung von min. Zoomstufe bei Verwendung von fitBounds funktioniert wie erwartet :) Wenn der Zoom nach den Anpassungsgrenzen jetzt geringer ist als beispielsweise 13, können Sie einen neuen Zoom einstellen, den Sie bevorzugen
quelle
Hier ist meine Lösung, die auch funktioniert, wenn zwei Marker sehr nahe beieinander liegen. Die effektive maximale Zoomstufe ist in beiden Situationen gleich. Wir werden also nicht unnötig herauszoomen, wenn mehr als eine Markierung vorhanden ist
Der Effekt sorgt wiederum für einen maximalen Zoom, ohne die Option maxZoom zu verwenden. Dies hat den wahrscheinlich unerwünschten Effekt, dass der Benutzer mit der Zoomsteuerung nicht weiter als bis zur maxZoom-Stufe zoomen kann
Ich habe vorher maxLat, minLat, maxLng und minLng berechnet ...
quelle