My New Antwort :)
Verwenden Sie die Google Directions API.
Es sollte möglich sein, eine Anfrage an http://maps.google.com/maps/api/directions/<json|xml>?<params>
zu stellen und die Koordinaten als origin
und destination
Parameter anzugeben.
Ich versuchte es kurz, aber es gab keine Ergebnisse zurück. Entlang ihrer Dokumente sollte es funktionieren, aber sie erklären nicht im Detail, wie man Längen- und Breitengrade vorgibt. Aber sie sagen, dass es möglich ist. Zitat:
[...] Herkunft (erforderlich) - Die Adresse oder Text Breite/Länge Wert, von dem Sie Richtungen berechnen [...]
Dennoch sollte dies fang an. Ich würde vorschlagen, mit dem JSON-Ausgabeformat zu gehen. Es ist viel einfacher zu analysieren und sollte weniger Bandbreite verbrauchen (es ist weniger ausführlich als XML).
Es funktioniert: Hier ist ein Beispiel URL: http://maps.google.com/maps/api/directions/json?origin=49.75332,6.50322&destination=49.71482,6.49944&mode=walking&sensor=false
meine Antwort
Die gerade Linie Abstand leicht bestimmt werden kann, die Haversine Formel. Wenn Sie die Route von Google abrufen, können Sie die Entfernung jedes Segments berechnen und zusammenfassen.
Vor einiger Zeit schrieb ich unten die (bekannten) Algorithmus (Haversine) in einem Blog-Post (python und pl/sql)
Hier ist die Kopie des Codes Python:
from math import sin, cos, radians, sqrt, atan2
def lldistance(a, b):
"""
Calculates the distance between two GPS points (decimal)
@param a: 2-tuple of point A
@param b: 2-tuple of point B
@return: distance in m
"""
r = 6367442.5 # average earth radius in m
dLat = radians(a[0]-b[0])
dLon = radians(a[1]-b[1])
x = sin(dLat/2) ** 2 + \
cos(radians(a[0])) * cos(radians(b[0])) *\
sin(dLon/2) ** 2
#original# y = 2 * atan2(sqrt(x), sqrt(1-x))
y = 2 * asin(sqrt(x))
d = r * y
return d
Translating Dies sollte Java trivial sein.
Vielen Dank! Aber ich bin besonders an der Laufdistanz interessiert. Das Problem ist im Moment, dass ich nicht die Route von Google mit nur Koordinaten bekomme. Ich habe versucht, die URL mit Koordinaten im Browser, es sagt, dass es den Ort nicht versteht. – wei
Ich weiß nicht, ob die Änderung in der Antwort eine Benachrichtigung ausgelöst hat ... also schreibe ich zusätzlich diesen Kommentar, der sich darum kümmern sollte. – exhuma
Und jetzt funktioniert es ... :) – exhuma