Я получаю два местоположения GEO в своем приложении, и мне нужно рассчитать расстояние между ними, и после вычисления расстояния мне нужно сравнить этот результат с определенным порогом, который в моем случае 50 meters
, как бы определить этот порог в float. Кроме того, в настоящее время я, мой андроид, находится в том же месте, но всегда получаю расчетное расстояние между двумя двумя геолокациями, определенными после интервала более 50 метров. Как это возможно? Я беру порог в 50 метров, как:Определение порога для расстояния между двумя местоположениями GEO?
private static final float DISTANCE_CHANGE_METERS = 50.0f; //50 meters
и я вычисления расстояния по следующей формуле я нашел на StackOverflow:
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 метров, так как я никогда не двигался в дюйме от того места, где я был раньше ... ???? –
Не могли бы вы предоставить набор координат, который вы используете? –