Ma nouvelle réponse :)
Utilisez le Google Directions API.
Il devrait être possible de faire une demande à http://maps.google.com/maps/api/directions/<json|xml>?<params>
et en spécifiant les coordonnées comme paramètres origin
et destination
.
Je l'ai brièvement essayé mais il n'y a eu aucun résultat. Le long de leurs documents, cela devrait fonctionner, mais ils n'expliquent pas en détail comment spécifier la latitude et la longitude. Mais ils disent que c'est possible. Quote:
[...] origine (obligatoire) - L'adresse ou valeur latitude/longitude textuelle à partir de laquelle vous souhaitez calculer l'itinéraire à [...]
Néanmoins, cela ne devrait vous avez commencé. Je suggère d'aller avec le format de sortie JSON. Il est beaucoup plus simple d'analyser et d'utiliser moins de bande passante (c'est moins bavard que XML).
Il fonctionne: Voici un exemple d'URL: http://maps.google.com/maps/api/directions/json?origin=49.75332,6.50322&destination=49.71482,6.49944&mode=walking&sensor=false
ma réponse précédente
La distance en ligne droite peut facilement être déterminée en utilisant la formule Haversine. Si vous récupérez l'itinéraire depuis Google, vous pouvez calculer la distance de chaque segment et les additionner.
Un peu en arrière, j'ai écrit l'algorithme (bien connu) (Haversine) dans un billet de blog (python et pl/sql)
Voici la copie du code 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
Traduction ceci à Java devrait être trivial.
Merci! Mais je suis particulièrement intéressé par la distance de marche. Le problème en ce moment est que je ne sais pas comment obtenir l'itinéraire de google avec seulement des coordonnées. J'ai essayé l'URL avec les coordonnées dans le navigateur, il dit qu'il ne comprend pas l'emplacement. – wei
Je ne sais pas si la modification dans la réponse a déclenché une notification ... donc je vais également écrire ce commentaire qui devrait prendre soin de cela. – exhuma
Et maintenant ça marche ... :) – exhuma