Holen Radius Der Sichtbaren Karte in Android
Gibt es überhaupt eine Möglichkeit zu finden, radius der sichtbaren Karte aus dem mittleren Punkt?
Möchte ich, um die in der Nähe von Orte gegen den Mittelpunkt der Karte von einer API, und die API erfordern, lat,lng und radius. Ich bin in der Lage, um lat und lng-Anlagen, von der Mitte Punkt, konnte aber nicht einen Weg finden, wie radius .
Dank
Du musst angemeldet sein, um einen Kommentar abzugeben.
Für die Google Maps Android API, können Sie die Grenzen durch...
Aus der map reference, Holen Sie sich die
Projection
durch getProjection(). Und,Also aus der Projektion, können wir die getVisibleRegion(), und um die VisibleRegion der Karte, die enthält eine LatLngBounds, das ist eine Klasse, die enthält 2
LatLng
Variablen, eine für die Nordost-Ecke der gebundenen und eine für die Südwest-Ecke.Also der code sollte wie folgt Aussehen:
=-=-=-=-=-=
edit:
Kann sein das ich zu naiv war, da nur die NE-und SW kann dieses problem lösen, aber nur unter dem speziellen Fall, in dem Benutzer nicht drehen der Karte oder tilt-up für die 3D-Karte.
Also statt, Sie können nur greifen die
VisibleRegion
vorgesehen, die 4 Variablen, farRight, farLeft, nearRight, nearLeft, repräsentieren jeweils 4 conners von der Gegend.Dann können wir berechnen Sie die Breite und Höhe der Fläche, für die 4 Punkte und Holen die kleineren (naja, irgendwann Breite kann größer sein als die Höhe, denke ich.)
Für die Berechnung können wir verwenden nur die
Location.distanceBetween(x1,y1,x2,y2,result)
Funktion...was macht der code wie folgt Aussehen:
vielen Dank für deine Antwort @kaho, es hat mir sehr geholfen (auch Sie berechnet den distanceWidth und distanceHeight in der gleichen Weise).
Klarstellung:
farLeft LatLng-Objekt, das definiert die oberen linken Ecke der Kamera.
farRight LatLng-Objekt, das definiert die oberen rechten Ecke der Kamera.
nearLeft LatLng-Objekt, das definiert die linken unteren Ecke der Kamera.
nearRight LatLng-Objekt, das definiert die rechten unteren Ecke der Kamera.
BEARBEITET: ich weiß nicht, warum wir eine einfache Berechnung wird etwas komplizierter, der sichtbare radius ist nur EINE HÄLFTE DER SICHTBAREN DIAGONALE LINIE, das ist alles!
Ich auch angemeldet, meine Ergebnisse zu vergleichen mit @jossef-harush 's Ergebnisse und es ist in etwa:
Volle Fläche, auch die Ecken!
Glaube ich nicht, siehe andere Antworten decken den gesamten anzeigen Bereich;
siehe das Bild unten, um es zu testen, ich zeichnete einen Kreis overlay zu sehen, die Grenzen des berechneten radius, es deckt nicht die gesamten anzeigen Bereich.
meine Modifikation ist ganz einfach, ich habe Den Satz des Pythagoras zu finden, die den passenden radius enthalten die Karte "Rechteck".
Für die Kotlin-Benutzer, rufen Sie diese Funktion auf aus
setOnCameraIdleListener
edit: Die folgende Antwort ist für die Google Maps JavaScript API v3
=-=-=-=-=-=-=
Ich denke, die Antwort wäre: ja, Sie können.
Entsprechend der Dokumentation, können Sie berechnen Abstand zwischen 2 Punkten durch:
computeDistanceBetween(LatLngFrom, LatLngTo)
Ebenfalls erhalten Sie die Grenze von der Karte, indem Sie mit
getBounds()
- Methode, die in der google.maps.Map-Klasse.