Рассчитать почтовые индексы в диапазоне - PullRequest
0 голосов
/ 30 июля 2011

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

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

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

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

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

Ответы [ 4 ]

2 голосов
/ 30 июля 2011

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

2 голосов
/ 30 июля 2011

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

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

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

1 голос
/ 30 июля 2011

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

1 голос
/ 30 июля 2011

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

...