Этот сайт имеет основной алгоритм:
// in javascript, not hard to translate...
var y = Math.sin(dLon) * Math.cos(lat2);
var x = Math.cos(lat1)*Math.sin(lat2) -
Math.sin(lat1)*Math.cos(lat2)*Math.cos(dLon);
var brng = Math.atan2(y, x).toDeg();
ОБНОВЛЕНО: Смотрите здесь полный алгоритм Отображение математики и JavaScript
То 'дадим вам число от 0 до 360, тогда вам просто нужно просто найти:
var bearings = ["NE", "E", "SE", "S", "SW", "W", "NW", "N"];
var index = brng - 22.5;
if (index < 0)
index += 360;
index = parseInt(index / 45);
return(bearings[index]);
Важно отметить, что ваше направление действительно меняется при движении по земле.Приведенный выше алгоритм показывает, что вы начальный ориентир, но если вы путешествуете на большие расстояния, ваш ориентир будет значительно отличаться, когда вы достигнете цели (если вы путешествуете только на короткое расстояние [<несколько сотенкм], тогда это, вероятно, не изменится достаточно, чтобы быть проблемой). </p>