Получение расстояния между двумя местоположениями в Android, но не работает - PullRequest
0 голосов
/ 06 мая 2018

На самом деле я хочу получить точное расстояние между двумя латами и лангами. Но я пробовал три разные функции, но все они не дают правильного расстояния.

Вот код:

 private double distance(double lat1, double lon1, double lat2, double lon2) {

//first formula
        Location startPoint=new Location("locationA");
        startPoint.setLatitude(lat1);
        startPoint.setLongitude(lon1);

        Location endPoint=new Location("locationA");
        endPoint.setLatitude(lat2);
        endPoint.setLongitude(lon2);

        double distancee=startPoint.distanceTo(endPoint);

// second formula
        float[] results=new float[1];
        Location.distanceBetween( lat1,  lon1,  lat2,  lon2, results);
        float result= 0;
        if (results != null) {
            result = results[0];
        }
        double dvar=(double)result;



        //third formula
        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 (distancee);
    }


    private double deg2rad(double deg) {
        return (deg * Math.PI / 180.0);
    }

    private double rad2deg(double rad) {
        return (rad * 180.0 / Math.PI);
    }

Это все не дает мне правильное расстояние, пожалуйста, наставьте меня, как я могу достичь этой цели

1 Ответ

0 голосов
/ 06 мая 2018

Расстояние, которое вы получаете, является прямой линией между двумя точками, и, как вы выяснили, используя инструмент в GoogleMaps, оно является правильным. Чтобы получить расстояние с учетом дорог и всего остального, вам нужно будет использовать Google Directions Api . Вам нужно будет сделать HTTP-запрос, используя Retrofit или OkHttp или что-то еще.

В вашем запросе вам нужно будет указать источник и пункт назначения, а в качестве ответа вы получите кучу информации, в том числе расстояние, и дополнительную информацию вы можете найти на сайте документации, на который я ссылался.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...