0

我正在使用以下代码段获取用户的最佳当前位置:

    LocationManager ltrLocationer = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
    Criteria criteria = new Criteria();
    criteria.setAccuracy(Criteria.ACCURACY_FINE);
    Location locLocation = ltrLocationer.getLastKnownLocation(ltrLocationer.getBestProvider(criteria, true));

我有两个Double分别包含纬度和经度的对象。我想检查当前坐标与上述值之间的距离(以米为单位)。我怎样才能做到这一点?

这听起来像是一件很简单的事情,但我找不到一个例子来说明这一点。谢谢。

4

3 回答 3

2

Location 对象有一个距离方法。使用它,它会为您计算。如果您的坐标为双精度,请使用静态函数 Location.distanceBetween

于 2013-03-27T13:07:04.277 回答
1

看看这里:GPS坐标到米 这里还有一篇关于用于进行计算的方程的维基百科文章:Haversine公式

于 2013-03-27T12:44:22.513 回答
0

检查此方法,这将为您提供distance in a straight line.

public static double distFrom(double lat1, double lng1, double lat2, double lng2) {
double earthRadius = 3958.75;
double dLat = Math.toRadians(lat2-lat1);
double dLng = Math.toRadians(lng2-lng1);
double sindLat = Math.sin(dLat / 2);
double sindLng = Math.sin(dLng / 2);
double a = Math.pow(sindLat, 2) + Math.pow(sindLng, 2)
        * Math.cos(Math.toRadians(lat1)) * Math.cos(Math.toRadians(lat2));
double c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1-a));
double dist = earthRadius * c;

return dist;
}

如果你想要一个road distance这个操作有点困难,并且会涉及对Google Direction API服务的调用。

于 2013-03-27T12:41:53.533 回答