通过lat和lon获得距离

时间:2012-08-05 02:32:06

标签: android gps

我正在创建一个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;       
}

3 个答案:

答案 0 :(得分:4)

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

编辑:看起来莫里森打败了我

答案 1 :(得分:2)

所以你得到了同一点之间的距离,或者是从一个点到另一个点的距离是什么?

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

答案 2 :(得分:0)

你的方法存在的问题是,这会像乌鸦一样苍蝇,但是如果我从一个航点开始,绕着一个转弯走下另一条街道,那么当我走2英里时,我看起来就像是走了100米。

所以,除非你拿出足够数量的积分来处理道路曲线和人们走上不同道路的问题,否则你的数字将与使用导航仪查看距离时的数字大不相同。

正如其他人提到你的错字一样,我不会详细说明为什么距离为零,但你可能想要考虑你的方法。

现在,如果用户正在行走,或者骑自行车,你的方法可能会很好,但是对于驾驶你可能想要测试很多,看看你是否对这种差异感到满意。