Рассчитать почтовые индексы в диапазоне

У меня есть веб-сайт, на котором пользователи начинают с ввода своего почтового индекса.

У меня есть таблица с разными магазинами, которые также содержат почтовые индексы, принадлежащие магазинам.

Можно ли получить почтовые индексы, скажем, в радиусе 5 км от почтового индекса, введенного пользователем?

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

Могу ли я использовать для этого Google Maps? Должен ли я получить предварительно рассчитанный список всех почтовых индексов (одной страны) и их координат? Любые другие предложения?


person PeeHaa    schedule 30.07.2011    source источник


Ответы (4)


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

person E.J. Brennan    schedule 30.07.2011

вы можете хранить долготу/широту для каждого почтового индекса. Эти данные доступны бесплатно в сети, например, здесь http://www.boutell.com/zipcodes /. Затем вы найдете почтовые индексы в радиусе, используя функцию расстояния по большому кругу, которая обсуждается здесь MySQL Расстояние по большому кругу (формула Хаверсина)

person plague    schedule 30.07.2011
comment
в последний раз, когда я проверял, на карте мира была пара других стран... - person Karoly Horvath; 30.07.2011
comment
Да, но только в одной стране используются почтовые индексы. Если вы ищете магазины в радиусе X миль, вы, вероятно, в любом случае не заинтересованы в пересечении каких-либо границ. :) - person Chris Hepner; 30.07.2011

У Google есть руководство по этому вопросу, которое должно указать вам правильное направление. Немного тригонометрии в SQL-запросе — единственная трудная часть. На первый взгляд, есть два основных способа сделать это:

  1. Получите координаты широты/долготы для каждого магазина. Это можно сделать с помощью API геокодирования Карт Google, указав почтовый адрес для магазин. Вам нужно будет сделать это только один раз для каждого местоположения.
  2. Только наличие почтового индекса для каждого магазина и использование таблицы почтовых индексов с геометрически центрированными координатами широты и долготы для каждого. Найдите почтовые индексы, которые находятся в пределах досягаемости, а затем покажите магазины с этими почтовыми индексами.

Первое было бы более точным, но работает и то, и другое. Если вы рассчитываете расстояние по почтовому индексу, а не по адресу, вам все равно нужно искать широту/долготу для этого почтового индекса.

person Chris Hepner    schedule 30.07.2011

вам нужно получить широту/долготу из почтового индекса, а затем вы можете найти места поблизости с помощью карт или API геомест. перейдите к Google Maps API или YQL Geo API.

person Hardik    schedule 30.07.2011