Расстояние между двумя местами не является правильным

Я использовал алгоритм на http://www.movable-type.co.uk/scripts/latlong.html для нахождения расстояния между двумя точками.

Мои две точки

long1 = 51.507467;
lat1 = -0.08776;

long2 = 51.508736;
lat2 = -0.08612;

Согласно Подвижному Сценарию Типа ответ составляет 0.1812 км

Мое приложение дает результат (d) как 0.230 км

Проверка формула Haversine: http://www.movable-type.co.uk/scripts/latlong.html

    double R = 6371; // earth’s radius (mean radius = 6,371km)
    double dLat =  Math.toRadians(lat2-lat1);

    double dLon =  Math.toRadians(long2-long1); 
    a = Math.sin(dLat/2) * Math.sin(dLat/2) +
            Math.cos(Math.toRadians(lat1)) * Math.cos(Math.toRadians(lat2)) * 
            Math.sin(dLon/2) * Math.sin(dLon/2); 
    double c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1-a)); 
    double d = R * c;

5
задан AndroidHacker 3 January 2014 в 07:14
поделиться

2 ответа

Зачем изобретать собственный калькулятор расстояний, он встроен в класс Location .

Отъезд

distanceBetween(double startLatitude, double startLongitude, double endLatitude, double endLongitude, float[] results) 
Computes the approximate distance in meters between two locations, and optionally the initial and final bearings of the shortest path between them.
9
ответ дан 18 December 2019 в 14:41
поделиться

Ваша реализация верна. Расстояние с учетом этих долгот и широт должно составлять 0,230 км . Однако обычно вводятся координаты (широта, долгота). Помещение их в обратном порядке (долгота, широта) дает неверное расстояние 0,1812 км .

3
ответ дан 18 December 2019 в 14:41
поделиться
Другие вопросы по тегам:

Похожие вопросы: