Google Maps Circle Overlay и Vincenty Formula - PullRequest
2 голосов
/ 14 октября 2010

Я использую оверлей Circle как часть V3 API Google Maps Javascript (т. Е. См. Ниже - у нас есть последующий вызов, который фактически устанавливает радиус и т. Д.) Для отображения пространственных местоположений в нашем приложении.

   var circle = new google.maps.Circle({
      fillColor: lCircleColor,
      strokeWeight: 2
    });

У нас также есть фоновый серверный процесс, который вычисляет расстояния между точками от центра круга, чтобы определить, находятся ли точки внутри или снаружи круга - когда точки попадают внутрь, мы поднимаем тревогу.Недавно у нас был один конкретный случай, когда точка (широта = 31,197163, долгота = -83,87292) падает прямо на границе круга (широта = 31,1998, долгота = -83,8738, радиус = 1000 футов).

При использовании формулы Хаверсайна для расчета расстояния рассчитанное расстояние больше радиуса, тогда как у Винсенти (точнее) расстояние меньше радиуса, в результате чего внутренний процесс генерирует сигнал тревоги о том, что точка попадает в местоположение.

Мой вопрос связан с тем, как на Картах Google отображается наложение круга.Когда мы видим его в нашем приложении, оно, кажется, выпадает за пределы круга (видно только в увеличенном масштабе).В другом месте я читал, что для расчета расстояния API-интерфейсы Google используют алгоритм Винсенти, но для отображения их наложения они принимают сферическую форму (и, таким образом, возможно, объясняют, почему точка кажется выпадающей из круга)?

1 Ответ

0 голосов
/ 06 сентября 2011

В Google Maps API V3 эти функции уже предусмотрены в «сферическом» пространстве имен в библиотеке google.maps.geometry.Эта библиотека не загружается по умолчанию при загрузке API JavaScript Javascript, но ее необходимо явно указать с помощью параметра начальной загрузки библиотеки.

http://code.google.com/apis/maps/documentation/javascript/geometry.html

После загрузки таких функций, как computeDistanceBetween (), computeHeading (), computeOffset (), interpolate (), все доступны.

Таким образом, вам не нужно реализовывать какие-либо алгоритмы самостоятельно, а использование внутренних версий устраняет обнаруженные вами расхождения.

...