Android 使用lat和lon获得行驶距离

Android 使用lat和lon获得行驶距离,android,gps,Android,Gps,我正在创建一个Lat/Lon坐标的ArrayList,然后希望获取所有坐标,并找到行驶的总距离。但我当前的代码一直返回0。有人能告诉我我做错了什么吗 public float getDistanceTraveled() { float[] dist = new float[1]; float totalDist = 0; for(int i = 0; locs.size()-2 >= i; i++) { double lat1 =

我正在创建一个Lat/Lon坐标的
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;       
}

那么你得到的是同一点之间的距离,或者说,从一个点到另一个点的距离是lat,而从另一个点到另一个点的距离是长的

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

看起来像是一个小型的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();

编辑:看起来莫里森在这方面击败了我

你的方法的问题是,这会像乌鸦飞一样,但如果我从一个航路点出发,转过一个弯,然后沿着另一条街道走,我可能会在走了2英里的时候跑100米

因此,除非您使用足够数量的点来处理道路弯曲和人们走上不同道路的问题,否则您的点的数量将与使用导航器查看距离时非常不同

正如其他人提到的你的打字错误,我不会详细说明为什么距离为零,但你可能想想想你的方法


现在,如果用户正在步行,或者骑自行车,您的方法可能很好,但是对于驾驶,您可能需要进行大量测试,看看您是否对差异感到满意。

Log
lat1
lon1
lat2
,以及
lon2
,并查看它们的值是否正确。我意识到这就像乌鸦飞一样。这对我来说很好。(至少现在)打字错误是个问题。