Je veux calculer la distance totale entre chaque point contient la lat et long, ces points sont stockés dans la base de données locale. Le scénario est donc que je souhaite calculer la distance de Point A en B & B sur C & C à D et c & C Les points (lat and Long) sont stockés dans la base de données à l'aide de Google Place API P>
Tous les points sont extraites de la base de données. P>
4 Réponses :
Vous pouvez calculer la distance entre 2 points d'emplacement sans utiliser Plages API
private double distance(double lat1, double lon1, double lat2, double lon2) { double theta = lon1 - lon2; double dist = Math.sin(deg2rad(lat1)) * Math.sin(deg2rad(lat2)) + Math.cos(deg2rad(lat1)) * Math.cos(deg2rad(lat2)) * Math.cos(deg2rad(theta)); dist = Math.acos(dist); dist = rad2deg(dist); dist = dist * 60 * 1.1515; return (dist); } private double deg2rad(double deg) { return (deg * Math.PI / 180.0); } private double rad2deg(double rad) { return (rad * 180.0 / Math.PI); }
Mais je stocke la lat et la longue utilisation des endroits API, il est requis pour l'application.
Pour calculer la distance, vous n'avez pas besoin de places API, c'est ce que je dis
Oui, vous avez raison mais selon le diagramme, plusieurs points sont stockés dans la base de données Ces points sont stockés à l'aide de places API maintenant, je souhaite créer une distance entre chaque point
Vous avez la liste des points (emplacement), d'abord calculer la distance entre l'emplacement 1 et l'emplacement 2, puis l'emplacement 2 et l'emplacement 3 et ajouter la distance.
J'ai des points dynamiques non statistiques points de points pourraient être jusqu'à 20 ans pourrait être 30
Comment la convertir en km?
Je ne sais pas si je comprends la portée de cette question. Avez-vous besoin de prendre en compte la courbure de la Terre? Ou il ne s'agit que de 2 points aléatoires? P>
https://www.movable-type.co.uk/scripts /latlong.html p>
Supposons que 1 est la latitude et 2 est une longitude, de sorte que A1 est la latitude du point A. P>
Calculer 2 points dans un avion est quelque chose comme Somethign comme celui-ci: P>
distance = Donc, pour calculer par exemple la distance de D TO E, c'est le suivant: sqrt ((A1-B1) + (A2-B2)) code> p>
SQRT ((E2-D2) + (E2-D2)) CODE> P>
Je suppose que vous avez déjà les coordonnées stockées quelque part dans votre programme.
class DistanceCalculator { public static void main (String[] args) throws java.lang.Exception { System.out.println(distance(32.9697, -96.80322, 29.46786, -98.53506, "M") + " Miles\n"); System.out.println(distance(32.9697, -96.80322, 29.46786, -98.53506, "K") + " Kilometers\n"); System.out.println(distance(32.9697, -96.80322, 29.46786, -98.53506, "N") + " Nautical Miles\n"); } private static double distance(double lat1, double lon1, double lat2, double lon2, String unit) { if ((lat1 == lat2) && (lon1 == lon2)) { return 0; } else { double theta = lon1 - lon2; double dist = Math.sin(Math.toRadians(lat1)) * Math.sin(Math.toRadians(lat2)) + Math.cos(Math.toRadians(lat1)) * Math.cos(Math.toRadians(lat2)) * Math.cos(Math.toRadians(theta)); dist = Math.acos(dist); dist = Math.toDegrees(dist); dist = dist * 60 * 1.1515; if (unit == "K") { dist = dist * 1.609344; } else if (unit == "N") { dist = dist * 0.8684; } return (dist); } } }
float[] distanceWidth = new float[2]; Location.distanceBetween( startLatitude, startLongitude, endLatitude, endLongitude, distanceWidth); //You will get float[] of results after Location.distanceBetween(). float distance = distanceHeight[0]; float distanceInKm = distance/1000;
Dupliqué possible de Calculer la distance entre deux points de longitude de latitude? (Formule Haversine)
Voulez-vous une distance de conduite, une distance de marche ou une distance de ligne droite?