2010-03-24 3 views
7

Мне нужно «найти ближайшее место» на нашем сайте.«Найти ближайшего места» по почтовому индексу?

Когда посетитель вводит почтовый индекс, он перенаправляется на определенную веб-страницу для нашего ближайшего местоположения. У нас сорок мест в США и Канаде.

Как я могу построить что-то подобное? Могу ли я сделать это с помощью API Карт Google? У меня уже есть пользовательская карта на Картах Google. Это заложено в наших местах. Было бы неплохо отправить команду Google Maps, чтобы сказать «какое у нас самое ближайшее место в почтовом индексе ________».

Любые предложения?

ответ

7

Заканчивать поиска близость признакам здесь:

Using PHP/MySQL with Google Maps

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

+0

@Pekka Использование API Карт Google - возможно ли выполнить расчет, получить результаты, но не отобразить карту? – codemonkey613

+0

@codemonkey да есть. Вы можете сделать запрос геокодирования (до 10 000 в день) API без отображения его на карте *, но * я думаю, что их условия предоставления услуг запрещают любое долговременное сохранение результатов геокодирования - они хотят, чтобы вы сделали запрос каждый раз, когда вам нужны данные. –

+0

Спасибо. 10 000 должно быть более чем достаточно для наших нужд. И да, мы не будем хранить результаты. – codemonkey613

0

Карты Google имеют ограничения в использовании для коммерческих целей, поэтому вы можете рассмотреть эти (ограничения) заранее. Из моего прежнего опыта я бы предложил API MapQuest. Вы можете найти здесь: http://developer.mapquest.com/ и краткое руководство пользователя http://www.mapquest.com/features/developer_tools_oapi_quickstart

MapQuest швы лучше, когда дело доходит до коммерческих сделок. В любом случае, проверьте их T & C, прежде чем вы будете внедрять его в производство.

У них JavaScriopt, и я думаю, что обычный WS для декодирования географического местоположения.

С уважением Konrad

+1

@ Konrad Я всегда предлагаю альтернативы Картам Google, но условия обслуживания Google очень снисходительны и для использования на коммерческих сайтах. Это просто сайты, которые * взимают плату за доступ * или закрыты для публики, где запрещено использовать Карты Google AFAIK. –

+0

@Pekka Звучит примерно правильно. – codemonkey613

+0

Спасибо, что поделились этой ссылкой, их услуги выглядят очень интересными. –

4

, если у вас есть широта и долгота каждого почтового индекса (поиск Google), вы можете использовать Haversine Формулы для расчета ближайших соседей.

http://www.codecodex.com/wiki/Calculate_Distance_Between_Two_Points_on_a_Globe

+1

Это потребует от меня найти базу данных почтовых индексов/почтовых индексов США/Канады. Что будет более 80 000 записей; и это должно быть актуально. Который кажется немного излишним для такого простого приложения. Поэтому я надеюсь, что смогу это сделать с помощью API Карт Google. – codemonkey613

+0

, поэтому пользователь вводит zipcode, вы выбираете все 40+ ваших местоположений, поскольку вы не знаете, что ближе всего. вы зацикливаете местоположения на вашем уровне приложения и вызываете api googlemaps для каждого, чтобы рассчитать его расстояние относительно zip, введенного пользователем. 40+ ajax звонит позже, у вас есть все расстояния для всех 40 мест, поэтому вы соответствующим образом фильтруете список и показываете пользователю. Хммм, насколько отзывчивым это должно быть? –

+1

Это будет больше похоже: пользователь вводит почтовый индекс, API Карт Google возвращает lat и длинный для этого почтового индекса. У меня уже есть лат и длинный для наших 40+ мест, используйте Формулу Хаверсина для вычисления ближайшего. – codemonkey613

3

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

+0

Связанная база данных использует 10-летние данные. Новые почтовые индексы добавляются очень часто. –

+0

Что делать, если у меня есть только почтовые индексы? – Umair

+0

Святая корова, это потрясающе! благодаря –