2013-03-27 55 views
0

我使用這個片段獲取用戶的最好的當前位置:如何檢查兩個緯度和經度coorindates之間的距離?

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

你是對的。我建議它關閉。 – 2013-03-27 13:51:21

回答

2

的位置對象有一個距離的方法。使用它,它爲你做數學。如果你的座標是雙曲線,使用靜態函數Location.distanceBetween

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服務的調用。

1

看看這裏:​​ 另外這裏的約用來做計算公式維基百科文章:Haversine formula

相關問題