Получаване на изминато разстояние с шир и дължина

Създавам ArrayList координати Lat/Lon и след това искам да взема всички и да намеря общото изминато разстояние. Но текущият ми код продължава да връща 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)


Изглежда като случай на малък type-o, не трябва ли вместо това да е това:

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