Похоже, это ситуация, когда вы пытаетесь перейти от (40.721319, -73.844311)
к (40.712278, -73.841610)
, где это пары широта / долгота, и вы хотите перемещаться, используя маршрут "Манхэттен", а не прямой большой круговой маршрут.
Похоже, что вы рассматриваете эти точки как противоположные углы "прямоугольника", в котором перемещение разрешено только по северному, южному, восточному и западному направлениям для перемещения из одной точки в другую и когда путешествие по пути всегда приводит путешественника ближе к пункту назначения.
Аппроксимация этого - найти один из углов ограничительного прямоугольника для всех таких путей. Их два: один на (40.721319, -73.841610)
, а другой на (40.712278, -73.844311)
. Таким образом, вы можете выбрать один из них и выбрать его в качестве путевой точки для аппроксимации длины каждого возможного «Манхэттенского маршрута» между двумя точками. Если мы выбрали первое, вам нужно будет рассчитать расстояние от начальной точки до точки маршрута, а затем до точки назначения. Такие как:
l(0) = (40.721319, -73.844311)
l(1) = (40.721319, -73.841610)
l(2) = (40.712278, -73.841610)
Используя уравнения Хаверсайна , мы видим, что расстояние от l(0)
до l(1)
составляет приблизительно 0,2276 км, а расстояние от l(1)
до l(2)
составляет приблизительно 1,005 км, а весь маршрут составляет около 1,2326. км.
Это приблизительно длина любого «Манхэттенского маршрута», который вы выбираете, когда расстояние строго уменьшается по пути, пройденному между двумя точками. Есть также некоторые ошибки из-за кривизны Земли, но для точек, расположенных близко друг к другу и настолько удаленных от любого из полюсов, этого должно быть достаточно для большинства приложений.