-4
votes

Comment puis-je calculer la distance entre la latitude et la longitude multiples?

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  Entrez la description de l'image ici

Tous les points sont extraites de la base de données.


2 commentaires

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?


4 Réponses :


0
votes

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);
}


6 commentaires

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?



0
votes

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?

Si c'est le premier : Je peux vous montrer ce lien car je ne peux pas vous aider:

https://www.movable-type.co.uk/scripts /latlong.html

si c'est ce dernier:

Supposons que 1 est la latitude et 2 est une longitude, de sorte que A1 est la latitude du point A.

 Calculer la distance de 2 points

Calculer 2 points dans un avion est quelque chose comme Somethign comme celui-ci:

distance = sqrt ((A1-B1) + (A2-B2))

Donc, pour calculer par exemple la distance de D TO E, c'est le suivant: SQRT ((E2-D2) + (E2-D2))


1 commentaires

Je suppose que vous avez déjà les coordonnées stockées quelque part dans votre programme.



0
votes
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);
        }
    }
}

0 commentaires

0
votes
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;

0 commentaires