Нахождение близлежащих мест в пределах заданного радиуса - PullRequest
3 голосов
/ 13 ноября 2011

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

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

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

Ответы [ 3 ]

3 голосов
/ 14 ноября 2011

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

Venue.near([40.71, 100.23], 20)    # venues within 20 miles of a point
1 голос
/ 13 ноября 2011

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

0 голосов
/ 31 декабря 2017

для простого - не точного, но быстрого приближения смотрите здесь на SO небольшое расстояние

он использует простую техническую логику, которая подходит для многих задач в реальном мире, но он быстр, но не предназначен, будьте точными

...