Расчет расстояния между двумя географическими c координатами с использованием гаверсинусного алгоритма - PullRequest
0 голосов
/ 20 июня 2020

Я пытаюсь рассчитать расстояние между двумя координатами с помощью алгоритма Хаверсина, однако измерение отличается от того, которое указано в приложении Google «Мои карты». Например:

Для следующих координат

Широта 1: -9,170352 Долгота 1: 38,833905

Широта 2: -9,16894 Долгота 2: 38,8334022

результат с использованием алгоритма Хаверсина составляет 166 метров, а "Мои карты" Google показывает только 135 метров.

Спасибо

public static double distance(double lat1, double lat2, double lon1,double lon2) {

final int R = 6378137; // Radius of the earth

double latDistance = Math.toRadians(lat1 - lat2);
double lonDistance = Math.toRadians(lon1 - lon2);

double a = Math.sin(latDistance / 2) * Math.sin(latDistance / 2)
        + Math.cos(Math.toRadians(lat1)) * Math.cos(Math.toRadians(lat2))
        * Math.sin(lonDistance / 2) * Math.sin(lonDistance / 2);
double c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a));



return R*c;

}

...