2009-10-02 3 views
4

Я занимаюсь разработкой приложения для хранения в магазине.Поиск близости с Google maps

При поиске в магазине в настоящее время отображается местоположение в googlemaps на основе адреса и почтового индекса.

Теперь я хочу построить функцию, которая также показывает другие магазины в радиусе 500 метров. Чтобы сделать это, мне нужно выполнить поиск/расчет близости.

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

Я сделал find this link, который имеет пример кода. Но я не уверен, могу ли я использовать код (и какой из кодов я должен использовать). У кого-нибудь есть примеры?

Также я собираюсь добавить новую таблицу в базу данных, в которой хранится гео-код для каждого хранилища. Нужно ли мне больше полей, чем «id», «широта» и «долгота»?

UPDATE
Я только что нашел this link в phpro.org. Похоже, это то, что мне нужно! Кто-нибудь использовал их примеры и мог прокомментировать это?

+0

У вас есть POI в вашей системе? или вы надеетесь использовать карты для этого? – Petrogad

+0

@Frederico: Что такое POI? – Steven

ответ

1

Вы не можете найти поиск по радиусу напрямую с помощью API карт Google, однако вы должны знать (или можете определить их через геокодирование своих адресов) широту и долготу каждой интересующей точки (POI), которую вы хотите включить в поиск ,

После этого вы можете использовать уравнение Great Circle для поиска близости, и оно оказывается очень быстрым. Мы реализовали это как хранимую процедуру для службы локатора на моей работе и использовали ее для поиска через> 3500 мест с временем отклика менее 0,1 секунды.

+0

Мой интернет-провайдер не разрешает хранимые процедуры :( – Steven

+0

Затем вы можете реализовать его в коде. Уравнение хорошо известно. –

1

Некоторые реализации SQL содержат геопространственные расширения. В этих реализациях вы можете напрямую написать предложение WHERE, которое фильтрует результаты по расстоянию от указанной точки.

Проверьте документацию по реализации SQL. Если у него есть геопространственный тип POINT, тогда имеет смысл вводить координаты как POINT, а не пару lat/lng, и подумайте об использовании этого поля в качестве ПРОСТРАНСТВЕННОГО КЛЮЧА, если вы собираетесь получать доступ к таблице в основном по местоположению.

Смежные вопросы