我在我的应用程序中获得两个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米,因为我从来没有从位置移动一英寸我以前在... ???? –
你能提供一套你正在使用的坐标吗? –