Близость поиска с помощью карт Google - PullRequest
4 голосов
/ 02 октября 2009

Я разрабатываю приложение для определения местоположения магазина.

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

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

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

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

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

ОБНОВЛЕНИЕ
Я только что нашел эту ссылку на phpro.org. Похоже, это именно то, что мне нужно! Кто-нибудь использовал их примеры и может прокомментировать?

Ответы [ 2 ]

1 голос
/ 03 октября 2009

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

Проверьте документацию вашей реализации SQL. Если он имеет геопространственный тип POINT, то имеет смысл ввести координаты в виде POINT, а не пары lat / lng, и рассмотреть возможность использования этого поля в качестве SPATIAL KEY, если вы собираетесь обращаться к таблице в основном по местоположению.

1 голос
/ 02 октября 2009

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

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

...