Получение пройденного расстояния с широтой и долготой

Я создаю ArrayList координат широты/долготы, а затем хочу взять их все и найти общее пройденное расстояние. Но мой текущий код продолжает возвращать 0. Может кто-нибудь сказать мне, что я делаю неправильно, пожалуйста?

public float getDistanceTraveled() {
    float[] dist = new float[1];
    float totalDist = 0;

        for(int i = 0; locs.size()-2 >= i; i++) {
            double lat1 = locs.get(i).getLatitude();
            double lon1 = locs.get(i+1).getLongitude();
            double lat2 = locs.get(i).getLatitude();
            double lon2 = locs.get(i+1).getLongitude();

            Location.distanceBetween(lat1, lon1, lat2, lon2, dist);
            totalDist += dist[0];
            Log.d("", "totaldist " + String.valueOf(totalDist));

        }
        return totalDist;       
}

person bwoogie    schedule 05.08.2012    source источник
comment
Зарегистрируйте lat1, lon1, lat2 и lon2 и посмотрите, правильно ли выглядят их значения.   -  person David Schwartz    schedule 05.08.2012


Ответы (3)


Похоже на небольшой тип-о, а не должно ли быть так:

double lat1 = locs.get(i).getLatitude();
double lon1 = locs.get(i).getLongitude();
double lat2 = locs.get(i+1).getLatitude();
double lon2 = locs.get(i+1).getLongitude();

редактировать: похоже, Моррисон меня опередил

person Computerish    schedule 05.08.2012

Итак, вы получаете расстояние между одной и той же точкой или это широта от одной точки и долгота от другой?

        double lat1 = locs.get(i).getLatitude();
        double lon1 = locs.get(i+1).getLongitude();
        double lat2 = locs.get(i).getLatitude();
        double lon2 = locs.get(i+1).getLongitude();
person Morrison Chang    schedule 05.08.2012

Проблема с вашим подходом заключается в том, что это будет по прямой, но если я выйду из одной путевой точки, повернув и пойду по другой улице, может показаться, что я прошел 100 м, когда я прошел 2 мили.

Таким образом, если вы не берете достаточное количество точек, чтобы решить проблему, когда дороги изгибаются и люди идут по разным дорогам, ваше число будет сильно отличаться от того, если вы используете навигатор, чтобы увидеть расстояние.

Как уже упоминалось о вашей опечатке, я не буду вдаваться в подробности того, почему расстояние равно нулю, но вы можете подумать о своем подходе.

Теперь, если пользователь идет пешком или, возможно, едет на велосипеде, ваш подход может быть хорошим, но для вождения вам может потребоваться многое протестировать и посмотреть, довольны ли вы несоответствием.

person James Black    schedule 05.08.2012
comment
Я понимаю, что это по прямой. что хорошо для меня. (по крайней мере, на данный момент) проблема была в опечатке. - person bwoogie; 05.08.2012