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

Ответы на вопрос(2)

Ваш ответ на вопрос