我正在使用此代码段获取用户当前最佳位置:
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
个对象,分别包含纬度和经度。我想检查当前坐标和上述值之间的距离(以米为单位)。我怎么能这样做?
这听起来很简单,但是我找不到一个例子来说明这一点。感谢。
答案 0 :(得分:2)
Location对象有一个distance方法。使用它,它为你做数学。如果您的坐标为douboles,请使用静态函数Location.distanceBetween
答案 1 :(得分:1)
看看这里:GPS Coordinates to Meters 这里还有一篇关于用于计算的公式的维基百科文章:Haversine formula
答案 2 :(得分: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
服务。