Android计算两个位置之间的距离

时间:2011-12-18 08:46:53

标签: java android location

  

可能重复:
  How to calculate distance between two locations using their longitude and latitude value

在你们给我一些关于地球如何不是一个完美的球体的教育之前,当你靠近两极时它们都会发生变化,这似乎就是我在网上所能找到的。在问我的父亲是一位多才多艺的地理学家和我的叔叔,他是为NASA工作的量子物理学家,而我是一名低级计算机程序员之前,我想先问你们这些人!

我只需要一个球场Km距离,因为乌鸦从手机飞到720平方公里面积的预先填充的位置列表,所以变化并不重要。

现在就是我,请不要丢弃任何东西。

mLatitude=-38.3533177
mLongitude=144.9127674

这是我十分钟前离乌鸦飞行约3公里,

mLatitude=-38.3444385
mLongitude=144.9374762

如何计算得到3公里?

我对Java很陌生,所以我不确定内置的Math函数是什么,我不知道计算是什么?

干杯,

麦克

2 个答案:

答案 0 :(得分:27)

您可以使用Location类的distanceTo()方法来获取两个位置之间的距离。

答案 1 :(得分:5)

public class Calculator {
    private static final int earthRadius = 6371;
    public static float calculateDistance(float lat1, float lon1, float lat2, float lon2)
    {
        float dLat = (float) Math.toRadians(lat2 - lat1);
        float dLon = (float) Math.toRadians(lon2 - lon1);
        float a =
                (float) (Math.sin(dLat / 2) * Math.sin(dLat / 2) + Math.cos(Math.toRadians(lat1))
                        * Math.cos(Math.toRadians(lat2)) * Math.sin(dLon / 2) * Math.sin(dLon / 2));
        float c = (float) (2 * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a)));
        float d = earthRadius * c;
        return d;
    }
}