Quelle api pour un calcul de distance
CikiCha
Messages postés
9
Statut
Membre
-
mtR^ Messages postés 1533 Statut Membre -
mtR^ Messages postés 1533 Statut Membre -
Bonjour à tous,
Je dois dans mon application calculer la distance entre deux coordonnées géographiques (lat/long). Vers quelle api google dois-je m'orienter ?
Comment cela fonctionne t-il ?
Merci d'avance.
Je dois dans mon application calculer la distance entre deux coordonnées géographiques (lat/long). Vers quelle api google dois-je m'orienter ?
Comment cela fonctionne t-il ?
Merci d'avance.
A voir également:
- Quelle api pour un calcul de distance
- Allumer pc à distance - Guide
- Calcul moyenne excel - Guide
- Calcul km marche à pied gratuit - Télécharger - Sport
- Calcul charpente bois gratuit - Télécharger - Architecture & Déco
- Logiciel gratuit calcul valeur nutritionnelle - Télécharger - Santé & Bien-être
3 réponses
Bonjour,
Est-ce qu'il y a vraiment besoin d'importer une bibliothèque entière juste pour une formule de maths qui tient sur une ligne ? (question rhétorique)
https://www.google.fr/#q=latitude+longitude+distance
Avec (x1,y1) et (x2,y2) les coordonnées en radians, le résultat est en km.
Est-ce qu'il y a vraiment besoin d'importer une bibliothèque entière juste pour une formule de maths qui tient sur une ligne ? (question rhétorique)
https://www.google.fr/#q=latitude+longitude+distance
distance = acos(sin(x1)*sin(y1)+cos(x1)*cos(y1)*cos(x2-y2))*6371
Avec (x1,y1) et (x2,y2) les coordonnées en radians, le résultat est en km.
Lut,
Si tu veux aussi prendre en compte la hauteur des points (altitude) :
lat, lon, el = latitude, longitude, hauteur
Si tu ne veux pas utiliser la hauteur, suffit de fixer el1 et el2 à 0 lors de l'appel (d'ailleurs peu importe, tant que el1 = el2)
Si tu veux aussi prendre en compte la hauteur des points (altitude) :
public static double distance(double lat1, double lat2, double lon1,
double lon2, double el1, double el2) {
final int R = 6371; // Radius of the earth
Double latDistance = Math.toRadians(lat2 - lat1);
Double lonDistance = Math.toRadians(lon2 - lon1);
Double a = Math.sin(latDistance / 2) * Math.sin(latDistance / 2)
+ Math.cos(Math.toRadians(lat1)) * Math.cos(Math.toRadians(lat2))
* Math.sin(lonDistance / 2) * Math.sin(lonDistance / 2);
Double c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a));
double distance = R * c * 1000; // convert to meters
double height = el1 - el2;
distance = Math.pow(distance, 2) + Math.pow(height, 2);
return Math.sqrt(distance);
}
lat, lon, el = latitude, longitude, hauteur
Si tu ne veux pas utiliser la hauteur, suffit de fixer el1 et el2 à 0 lors de l'appel (d'ailleurs peu importe, tant que el1 = el2)
Merci KX