Поиск ближайших местоположений в заданном радиусе

Я сохранил широту и долготу для разных интересных мест в моей базе данных. Всякий раз, когда пользователь нажимает на любое из интересных мест, на странице показа отображаются сведения о местоположении, а также карта Google с маркером, указывающим на него.

Теперь я пытался реализовать кнопку «Показать близлежащие места» вместе с раскрывающимся списком диапазонов (например, 50 км, 100 км, 150 км), но не мог понять, как это сделать.

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


person jayandra    schedule 13.11.2011    source источник


Ответы (3)


Вы должны использовать geocoder, он предоставляет встроенные методы, такие как:

Venue.near([40.71, 100.23], 20)    # venues within 20 miles of a point
person apneadiving    schedule 13.11.2011

Если вам нужно быть точным - вам нужно иметь в виду форму Земли - это не плоскость. Итак, выберите свой уровень точности (простая сфера, WGS84) и напишите для него математические вычисления. А какую базу используете? Некоторые из них могут работать с частичными индексами, что может быть очень полезно.

person madhead    schedule 13.11.2011
comment
Он поддерживает раздельные индексы: dev.mysql.com/doc/refman. /5.5/en/spatial-extensions.html - person madhead; 13.11.2011