Вычислять zipcodes в диапазоне

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

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

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

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

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

Solutions Collecting From Web of "Вычислять zipcodes в диапазоне"

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

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

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

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

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

вам нужно получить широту / долготу от почтового индекса, а затем вы можете найти места рядом с помощью карт или геометрий api. перейдите на google maps api или YQL geo api.