Определить расстояние LatLng от LatLng (или точки в круге) - Google Maps v3 - PullRequest
1 голос
/ 01 сентября 2011

Мне нужно выяснить, есть ли определенные LatLng внутри круга Google Maps (один из них: http://code.google.com/apis/maps/documentation/javascript/overlays.html#Circles). Как мне это сделать?

Могу ли я просто использовать радиус?

Ответы [ 3 ]

2 голосов
/ 01 сентября 2011
var distance = google.maps.geometry.spherical.computeDistanceBetween(
       results[0].geometry.location, otherLatLng);

if (distance <= THEradius) {...} else {...}

Я надеюсь, что это работает для вас. Смотри http://code.google.com/apis/maps/documentation/javascript/reference.html#spherical

1 голос
/ 01 сентября 2011

С точки зрения математики, чтобы найти расстояние от одной точки до другой в 2D, используйте Пифагор :

X = X1 - X2
Y = Y1 - Y2

(Выше эффективно рассчитывает вектор от одной точки к другой)

Расстояние от 1 до 2 = sqrt (X ^ 2 + Y ^ 2)

Затем вы можете сравнить это с вашим радиусом.Если расстояние меньше вашего радиуса, точка находится внутри круга.

Сначала вам нужно получить точку, соответствующую центру круга, и точку, которую вы пытаетесь сравнить.Они должны находиться в одном координатном пространстве.

1 голос
/ 01 сентября 2011

Что вам нужно сделать, так это преобразовать ваш лат-лонский список в координатное пространство Google или круг в лат-координатное пространство.

Способ конвертации зависит от того, какой язык вы используете, но есть сайты, которые сделают конвертацию для вас, если она одна.

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

HYP = (OPP^2 * ADJ^2)^0.5

Где:

OPP is the difference in x direction from the centre of the circle
ADJ is the difference in y direction from the centre of the circle.
HYP is the distance in a straight line from the centre of the circle
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...