Поиск по почтовому коду

0

Клиент хочет создать страницу на своем веб-сайте, где пользователь может искать продавца в своем ассортименте. То, что они хотят, - это возможность входа в британский PostCode и список их продавцов, чтобы появиться в ближайшем порядке.

Есть ли способ использовать Карты Google для определения ближайшего поставщика?

У меня есть база данных PHP MySQL со всеми поставщиками Почтовые индексы и детали, и у меня будет также почтовый индекс пользователя.

Теги:
google-maps-api-3
postal-code

5 ответов

3
Лучший ответ

Я думаю, вам понадобятся данные CodePoint Survey Survey Survey для сопоставления ваших почтовых индексов с долготой и широтой. Codepoint доступен как коммерческий продукт, или там Codepoint Open

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

ИЗМЕНИТЬ

Структура CSV файлов CodePoint можно найти здесь. Обратите внимание, что местоположение выполняется как Northings и Esatings, а не Longitude и Latitude, поэтому ему потребуется преобразование. В Интернете есть несколько статей об этом, например

http://www.deepbluesky.com/blog/-/converting-os-coodinates-into-longitude-latitude_7/
http://mediakey.dk/~cc/convert-northing-and-easting-utm-to-longitude-and-latitude/

но вам нужно знать, что OS Northings/Eastings основаны на эллипсоиде Airy 1830, а не на модели WGS84, используемой картами Google (и большинством систем GSM). Неспособность разрешить эту разницу может привести вас к чему-либо между 70-120 м между Корнуолом и Восточной Англией.

Вы также можете найти функции PHP для этого преобразования на сайте Movable Type (необходимое чтение для любого разработчика PHP, работающего с GeoData. Я бы рекомендовал добавить пару столбцов в свою базу данных запаса для долготы и широты и одноразовый script для обновления всех существующих данных с использованием данных Codepoint, а затем изменить свои процедуры вставки/обновления для продавцов, чтобы сохранить эту информацию -встретиться. Используя PHP, другое решение для этого преобразования PHPCoord Джонатана Стотта

Для более высокой производительности в запросе базы данных выполните поиск lat/long против "ограничивающей рамки" перед вычислением расстояний. Я объяснил, как это сделать в ответ на похожий запрос.

0

Вы можете найти этот сайт полезным: База данных почтовых индексов SQL/CSV

Я раньше использовал это для поиска long/lat из "outcode" почтового индекса.

Также есть php script (который я не тестировал), который вычисляет расстояние между двумя почтовыми индексами.

0

Вместо Google Maps этот открытый почтовый индекс API геокодирования может вам пригодиться. Как говорили другие, как только у вас есть лат для обеих точек, вы можете использовать стандартные альгосы для поиска расстояний. A предыдущий вопрос содержит некоторую информацию о том, как это сделать непосредственно в SQL.

0

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

Рассчитать расстояние между почтовыми индексами и пользователями

Это должно хорошо работать в вашем случае, если вы не думаете, что пользователь захочет проехать более 100 миль, чтобы купить продукт.

0

Думаю, вам понадобится немного больше данных. Я бы предположил, что вам нужно хранить широту и долготу каждого британского почтового индекса вместе с самим почтовым индексом. Я думаю, что эти данные доступны в Royal Mail за стоимость, и я помню, где-то читал, что он будет доступен и в общественном достоянии. Попросите пользователя ввести свой почтовый индекс, посмотрите свою широту и долготу в db, а затем используйте это для выполнения другого запроса, который вычисляет ближайший поставщик для них, возможно, в пределах определенного количества миль. Вы могли бы создать процедуру хранения, чтобы сделать все это на db. В этом сообщении есть некоторые подробности о том, как это сделать.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню