Legen Sie eine maximale zoom-level auf LatLngBounds-generator
Habe ich keine Antwort gefunden bei meiner Suche, es gibt ein paar Antworten auf SO, aber Sie funktionierte nicht für mich.
Habe ich 2 Marker auf der Karte und ich bin mit LatLngBounds-generator, damit der Kamera-zoom, um die richtige zoom-Stufe, um Sie beide. Alles funktioniert wie erwartet beiseite eine Sache, wenn die 2 Marker sind wirklich nah an einander, die Karte ist sehr sehr gezoomt und gut, es macht keinen Sinn, um dieses Niveau zu Zoomen.
LatLngBounds.Builder builder = new LatLngBounds.Builder();
builder.include(firstMarker.getPosition());
builder.include(secondMarker.getPosition());
LatLngBounds bounds = builder.build();
CameraUpdate cu = CameraUpdateFactory.newLatLngBounds(bounds, markerPadding);
Gibt es eine Möglichkeit zu zwingen, eine bestimmte Stufe der Vergrößerung, nach der die Kamera nicht Zoomen ? Dies würde vermeiden, dass die Karte zoomed in/out. Grundsätzlich bin ich mit 15.0 f Niveau von zoom. Wenn die Punkte zu weit Weg ist, möchte ich den zoom passen Sie beide. Wenn die Punkte immer in der Nähe ich will nicht, dass die zoom-Stufe, darüber hinaus zu gehen 15.0 f.
InformationsquelleAutor der Frage Alin | 2013-12-13
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich habe einen ähnlichen Fall, wo ich will mindestens eine Karte mit einer Diagonale von 2 Kilometern.
Deshalb habe ich nur noch zwei weitere Punkte zu der Baumeister: die erste 1 km Nord-westlich von der Mitte der original-bounds und die zweite 1 km Süd-östlich des Zentrums. Wenn diese innerhalb der Grenzen, die Sie nichts ändern. Wenn Sie außerhalb der ursprünglichen Grenzen, Sie erhöhen die Grenze auf eine sinnvolle Größe.
Hier ist eine vollständige code-Beispiel:
InformationsquelleAutor der Antwort user2808624
Ich implementierte diese Lösung nach der Antwort von user2808624, aber mit der SphericalUtil aus der Android-Maps Utility Library zu tun, die Berechnungen.
InformationsquelleAutor der Antwort dvdrlee
Spät kommt aber vielleicht hat ja jemand das gleiche Problem hatte ich: ich habe Grenzen, von einem Ort, nicht von einer LatLngBounds.Builder:
Ich verwendete Position.distanceBetween (...), um herauszufinden, ob die Grenzen waren zu klein, und verwenden Sie dann eine minimale zoom-Ebene mit dem Zentrum der Grenzen:
Die Methode der Prüfung:
Ich verwendet min zoom level 17 und Polsterung 20 für die Grenzen, die sind zu klein, zu klein, ist hier definiert durch min Abstand in meter 300. Sie können die Nummern wie Sie benötigen.
InformationsquelleAutor der Antwort Björn Kechel
Google ein api für die Begrenzung der max/min zoom-Stufen.
InformationsquelleAutor der Antwort malinjir
Hier ist eine viel kürzere version, basierend auf user2808624's Antwort.
Er ist ein bisschen schlampig, aber Sie können 0,001-zoom nicht weniger als ein Häuserblock, 0,01 für nicht weniger als einen Ausblick auf die Stadt. Nur Vorteil ist die nur 4 Zeilen extra-code.
InformationsquelleAutor der Antwort Marc
Haben Sie sich überlegt, eine Karte-fragment, das verborgen ist, und die Verwendung dieser, um zu bestimmen, zoom/Grenzen? Es ist offensichtlich nicht die beste Performance, aber es ist wahrscheinlich die einfachste/Genaueste Lösung. Zum Beispiel, es ist Komplex, um eine mathematische Lösung, die funktioniert in der Nähe der Pole und über 0 Grad Länge, (wenn Sie Pflege). Wenn Sie eine Karte, die alle eingebauten bereits. Sie konnten ganz offensichtlich auch mit dieser Lösung, die auf Ihre vorhandenen anzeigen, aber der Benutzer wäre ein bounce.
Hier ist, wie Sie es tun würde:
InformationsquelleAutor der Antwort GLee
Quick fix ist:
Vorsicht, dass könnte es halt vergrößern, bis die Karte vollständig geladen. Aber als quick-fix funktioniert es.
InformationsquelleAutor der Antwort Paul Brewczynski
Ist denkbar einfach:
InformationsquelleAutor der Antwort user2150941
Gibt es keine Möglichkeit zu begrenzen zoom-Stufen wie der 4.0.30, aber Sie können verfolgen dieses Problem.
Der einfache Weg wäre, zu erzwingen zoom-Stufe wie auf diesem video: http://www.youtube.com/watch?v=-nCZ37HdheY
Im Grunde sind Sie ruft
animateCamera
wenn bestimmte Zoomstufe erreicht ist.Aussehen würden, die ein bisschen seltsam, weil man dann 2 Animationen, die nicht durch den Benutzer gestartet.
Den harten Weg wäre, tut die Mathematik selbst. Versuchen Sie arbeiten mit
CameraUpdateFactory.newLatLngZoom
mitLatLng
als eine Mitte zwischen diesen Punkten und Ihrem max zoom wenn Sie feststellen, dass Punkte, die nahe beieinander sind.InformationsquelleAutor der Antwort MaciejGórski
Folgenden aus den Antworten von user2808624 und dvdrlee, schrieb ich eine Erweiterung in Kotlin:
Dies würde in der Regel in Ihrem Utils oder Erweiterungen Datei, und dann können Sie Sie von überall aus einfach so:
InformationsquelleAutor der Antwort Supriya