Формулы Винсенти точны с точностью до миллиметра в приближении WGS84 к форме Земли (что, очевидно, будет чрезмерным, поскольку Земля не согласна с WGS84 в этом отношении).
AНесколько лет назад я реализовал некоторые алгоритмы для вычисления расстояния в Javascript .Не стесняйтесь спрашивать, есть ли у вас какие-либо вопросы об алгоритмах, поскольку в коде отсутствуют комментарии.
Одна потенциальная проблема заключается в том, что эти алгоритмы работают на уровне моря и не учитывают различия в высоте.Лучше было бы преобразовать в геоцентрические декартовы координаты и использовать вместо этого прямолинейное расстояние ...
Прямое выражение для линейного расстояния d
точекс долготой φ
, широтой λ
и высотой h
задается как
k = √(a²·cos²φ + b²·sin²φ)
r = (a²/k + h)·cosφ
z = (b²/k + h)·sinφ
d = √((z - z')² + r² + r'² - 2·r·r'·cos(λ - λ'))
со следующими значениями для параметров
a = 6378137m
b = (a·297.257223563)/298.257223563