Как я могу осуществлять поиск по расстоянию с помощью Google Maps API?

StackOverflow https://stackoverflow.com/questions/2465525

Вопрос

  1. Итак, вот в чем проблема...У меня есть поле, в котором пользователи могут вводить свой адрес (который будет геокодирован с помощью Google Maps API).
  2. У меня есть несколько адресов виджетов в моей базе данных (сохранены как address..опять же, может быть легко геокодирован).

Что мне нужно, так это чтобы пользователь ввел свой адрес и чтобы появился список моих виджетов в зависимости от расстояния от их адреса.У меня есть ТЫСЯЧИ адресов для моих виджетов, а у пользователей, очевидно, бесконечное количество адресов.

Есть какие-нибудь идеи?

Спасибо.

Это было полезно?

Решение

SELECT latitude, longitude, SQRT( POW( 69.1 * ( latitude - 52.58 ) , 2 ) + 
POW( 69.1 * ( - 1.12 - longitude ) * COS( latitude / 57.3 ) , 2 ) ) AS distance 
FROM location ORDER BY distance

Кликните сюдаОни предоставляют несколько способов расчета расстояния — выберите тот, который вам больше подходит.

Другие советы

Если вы храните элементы в базе данных MySQL, то вот основа, что тебе нужно

Вы действительно НЕ МОЖЕТЕ использовать Google для расчета фильтрации по географическим расстояниям.Чтобы сделать это, вам нужно будет отправить им СВОИ данные, попросить их сохранить их и запросить для вас.Они могут предложить эту услугу сейчас или в будущем, но я о ней не слышал.

В порядке более легального, более дееспособного, более дорогостоящего:

A/ Как ОДИНОКИЙ точки или местоположения, представляющие интерес, вводятся пользователями вашего сайта, соберите географические координаты.Затем воспользуйтесь своей собственной поисковой системой и выполните поиск по расстоянию от точки.ВОЗМОЖНО, это нарушение соглашения с Google, но они упоминают "кэширование" результатов, чтобы снизить нагрузку на свои серверы.(Причина - это мое личное предположение.)

B / Используйте Google для массового геокодирования, возможно, по ОДНОМУ, максимум до 5000 в день для каждого IP-адреса вашего сайта, который я видел в последний раз.Даже не уверен, не является ли это нарушением соглашения об использовании.

C / Приобретите контракт с сервисом геокодирования и сохраните то, что они геокодируют для вас.

D / Приобретите библиотеку геокодирования и сделайте свое собственное геокодирование.

Этот пост в блоге, «Рассчитать расстояние с помощью Google Maps API», может быть чем-то поможет.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top