Нарисуйте круг, используя полилинии.Вы можете сделать это, выполнив цикл от 0 до 2 * PI (0..6.28), где количество шагов определяет «гладкость» вашего круга.Чтобы нарисовать круг, точки вашей полилинии будут (RADIUS sin (loop_counter), RADIUS cos (loop_counter)).
Вы можете искать в диапазоне, просто рассчитав расстояние от вашей начальной точки,distance = sqrt ((x1-x2) ^ 2 + (y1-y2) ^ 2) где x1, y1 - ваша возможность, а x2, y2 - позиция проверяемого вами объекта, находится в диапазоне или нет.Если значение этого выражения меньше X, это означает, что объект находится в диапазоне (x), который вы ищете.Но единица этого диапазона - это что-то вроде градуса на земле.Чтобы пересчитать это в километры, вам нужно умножить его примерно на 67 (посмотрите, например, на Google Earth, сколько градусов в вашем регионе примерно равно одному километру или миле)
Конечно, Земля не совсем сфера, но точнаяФункция очень сложна, и решение, приведенное выше, должно работать.
Редактировать: Для поиска необходимо иметь некоторые данные для поиска. Допустим, это база данных, в которой сохраненные объекты имеют значения долготы и высоты.Теперь, чтобы найти объекты, которые находятся в диапазоне от начальной точки X, Y, вы должны сравнить местоположение каждого объекта с вашими X и Y, вычислив расстояние до вашей точки и убедитесь, что расстояние меньше или равно диапазону, в котором вы ищете объекты.Пример запроса выглядит следующим образом:
SELECT * FROM objects_database WHERE SQRT((googlex-$lat)*(googlex-$lat)+(googley-$lng)*(googley-$lng)) < $realthemax
Где $ lat и $ lng - ваша начальная точка, а googlex и googley - это столбцы в базе данных со значениями объекта lat и lng.
$ realthemax это вашаспектр.Я называю это так, потому что мы вычисляем градусы, поэтому вы должны преобразовать свой диапазон (например, в километрах) в «градусы на земле».Я сделал это следующим образом:
- мое выражение и географическое положение Варшавы и Москвы возвращают диапазон около 16,97
- Я проверяю этот диапазон в реальном мире на Земле Гул, и по прямой линии, чторавно 1149 км
- , поэтому 1 «градус на земле» равен 67,67 км
Так что если диапазон, который вы хотите искать в километрах, равен $ themax, я получу значение диапазона для базы данных, напримерэто:
$realthemax = $themax/67.67;
Следует помнить, что эти значения зависят от вашего местоположения, и земля не является идеальной сферой, поэтому это выражение не будет особенно особенным на вершине или на дне Земли.Этот способ поиска будет похож на поиск объектов в идеальном круге НА КАРТЕ (но не должен), вы можете увидеть отклонение от идеального круга здесь:
http://gmaps -samples-v3.googlecode.com / SVN / багажник / круг-накладка / круг-overlay.html