distanceBetween () возвращает неточный результат?
я используюdistanceBetween()
класса Location для расчета расстояния между двумя точками следующим образом:
private float getDistanceInMiles(GeoPoint p1, GeoPoint p2) {
double lat1 = ((double)p1.getLatitudeE6()) / 1e6;
double lng1 = ((double)p1.getLongitudeE6()) / 1e6;
double lat2 = ((double)p2.getLatitudeE6()) / 1e6;
double lng2 = ((double)p2.getLongitudeE6()) / 1e6;
float [] dist = new float[1];
Log.i("destination coordinates", "Latitude:" + lat2 + ", Longitude: " + lng2);
Location.distanceBetween(lat1, lng1, lat2, lng2, dist);
return dist[0] * 0.000621371192f;
}
Документация говорит, что distanceBetween () «Вычисляет приблизительное расстояние в метрах между двумя точками и, при необходимости, начальную и конечную опоры кратчайшего пути между ними». Однако разница между результатом, возвращаемым функцией distanceBetween (), и реальным устройством GPS или приложением Google Navigation довольно велика. Например, мой метод вернет 6,2 мили, а карты Google показывают 10 миль для того же местоположения. Я дважды проверяю координаты начальной точки p1 и конечной точки p2, и они кажутся правильными. Так работает метод distanceBetween () или я что-то не так делаю? И, кстати, есть ли способ использовать API Google Place для получения расстояния в качестве ответа JSON?
Расстояние, рассчитанное с помощью Google Maps: 6.1 миль
И результат
Location.distanceBetween(41.742964, -87.995971, 41.811511, -87.967923, dist) is
4.947700