Wie berechne ich die latlng von einem Punkt in einem gewissen Abstand von einem anderen?
Zeichnen Sie einen Kreis auf der Karte habe ich ein center GLatLng (A) und radius (r) in Metern an.
Hier ist ein Diagramm:
-----------
--/ \--
-/ \-
/ \
/ \
/ r \
| *-------------*
\ A / B
\ /
\ /
-\ /-
--\ /--
-----------
So berechnen Sie die GLatLng an der position B? Unter der Annahme, dass r ist parallel zu dem äquator.
Immer den radius, wenn A und B gegeben ist, ist trivial mit dem GLatLng.distanceFrom () - Methode, aber tun es anders herum nicht so. Scheint, dass ich tun müssen, um einige schwerer math.
- Die Anpassung meiner Antwort auf die GMaps-API v2 einfach sein sollte. Ich glaube, es ist nur eine Frage der ersetzen
google.maps.LatLng
mitGLatLng
. Lassen Sie mich wissen, wenn Sie jede Schwierigkeit. - Vielen Dank, keine Probleme hier 🙂
Du musst angemeldet sein, um einen Kommentar abzugeben.
Brauchen wir eine Methode, die zurückgibt, der Zielpunkt gegeben, wenn ein Lager und die zurückgelegte Strecke von einem Punkt Quelle. Zum Glück gibt es eine sehr gute JavaScript-Implementierung von Chris Veness auf Entfernung berechnen, Lager und mehr zwischen Latitude/Longitude Punkte.
Folgendes wurde angepasst, um die Arbeit mit dem
google.maps.LatLng
Klasse:Würden Sie es einfach wie folgt:
Hier ist ein vollständiges Beispiel mit Google Maps API v3:
Screenshot:
UPDATE:
In der Antwort zu Paul ' s Kommentar unten, dies ist, was passiert, wenn der Kreis wickelt sich um einen der Pole.
Plotten
pointA
in der Nähe des Nordpols, mit einem radius von 1.000 km:Screenshot für
pointA.destinationPoint(90, radius)
:destinationPoint()
. 90 East, aber Sie können jedes Lager, ab 0 = Norden, im Uhrzeigersinn.var pointA = new google.maps.LatLng(85, 0);
und einem radius von 1000kmvar radius = 1000;
scheint zu funktionieren. Der Kreis cap wraps rund um den Nordpol, also auf der 2D-Projektion ist es nicht die Form eines Kreises mehr. Der Zielpunkt erscheint, im Recht zu sein.Wenn Sie sind, nachdem der Abstand zwischen 2 lat/lng-Punkte über der Erdoberfläche, dann finden Sie das javascript hier:
http://www.movable-type.co.uk/scripts/latlong-vincenty.html
Dies ist die gleiche Formel verwendet, in der android-API auf
android.location.Location::distanceTo
Können Sie ganz einfach konvertieren Sie den code von javascript zu java.
Wenn Sie möchten, um die Berechnung der Ziel-Punkt ist der Startpunkt, die Richtung und die Entfernung,
dann müssen Sie diese Methode:
http://www.movable-type.co.uk/scripts/latlong-vincenty-direct.html
Hier sind die Formeln in java:
Berechnen lat,long point an einem bestimmten Peilung und Entfernung von einem anderen, die Sie verwenden können, googles JavaScript-Implementierung:
Sehen https://developers.google.com/maps/documentation/javascript/reference#spherical
Für die Dokumentation
Die Antwort auf diese Frage und mehr können hier gefunden werden: http://www.edwilliams.org/avform.htm
Javascript für viele geodätische Berechnungen (direkt & inverse Probleme Bereich Berechnungen, etc). verfügbar ist bei
http://geographiclib.sourceforge.net/scripts/geographiclib.js
Beispiel ist gezeigt in
http://geographiclib.sourceforge.net/scripts/geod-calc.html
Eine Schnittstelle zu google maps ist im
http://geographiclib.sourceforge.net/scripts/geod-google.html
Dies beinhaltet Plotten eine geodätische (blau), geodätische Kreis (grün) und die geodätische Umschlag (rot).