我在我的應用程序中獲得兩個GEO位置,我必須計算它們之間的距離,並且在計算距離後,我必須將該結果與在我的例子50 meters
中定義的閾值進行比較,我將如何定義浮點閾值。此外,目前我的android fone處於相同的位置,但我總是可以在距離超過50米後確定的兩個地理位置之間的計算距離。這怎麼可能?我正在門檻爲50米爲:定義兩個GEO位置之間距離的閾值?
private static final float DISTANCE_CHANGE_METERS = 50.0f; //50 meters
,我通過以下公式我在計算器上計算髮現距離:
public static float 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 a = Math.sin(dLat/2) * Math.sin(dLat/2) + Math.cos(Math.toRadians(lat1)) * Math.cos(Math.toRadians(lat2)) * Math.sin(dLng/2) * Math.sin(dLng/2);
double c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a));
double dist = earthRadius * c;
int meterConversion = 1609;
return new Float(dist * meterConversion).floatValue();
}
請幫我在這方面。謝謝!
我這樣做......但我很困惑,我爲什麼總是距離大於50米,因爲我從來沒有從位置移動一英寸我以前在... ???? –
你能提供一套你正在使用的座標嗎? –