2009-12-02 2 views
3

Мне нужно использовать поиск по близости с почтовым индексом для Австралии. Переходя через некоторые ссылки, такие как http://www.randommouse.com/rms/about/product/FNDRY/docs/tutorial/08/how-to-add-google-maps-to-your-review-site-intro.htmlКак реализовать поиск близости с почтовым индексом?

Я обнаружил, что мне нужно управлять почтовыми кодами с широтой и долготой, если я не ошибаюсь. Но я не мог найти, как это реализовать. Может кто-нибудь предложить мне, как это сделать с php или дать некоторые ссылки, чтобы я мог видеть больше об этом.

Заранее благодарен.

Отредактировано:

Я отредактировал мой вопрос:

Могу ли я использовать Google API для этого есть, чтобы получить почтовые коды в пределах заданного диапазона. Я нашел ссылку для drupal. Поэтому я могу использовать google api, чтобы получить почтовые индексы. Ссылка была http://svendecabooter.be/blog/implementing-location-proximity-search-for-belgium-with-drupal-and-google-maps

ответ

3

Вам нужно будет найти базу данных с долготой и широтой каждого почтового индекса. Когда вы будете иметь долготу и широту, вы будете использовать формулу havesine (http://www.codecodex.com/wiki/Calculate_Distance_Between_Two_Points_on_a_Globe), чтобы рассчитать расстояние между точками. Чтобы выполнить поиск по близости, вам нужно будет рассчитать расстояние от начальной точки до всех точек в вашем наборе данных. Вы также можете использовать ограничительную рамку, а затем искать точки внутри этого ограничивающего прямоугольника. Геопространственная база данных, такая как PostGIS, построила функции, которые могут помочь в этом.

+0

Спасибо вам Andrew :). Одно дело, что когда мы храним все почтовые индексы Австралии в нашей базе данных, я думаю, что это сделает сайт медленным. Можем ли мы использовать google api для этого. Еще раз спасибо. – user75472

+0

Добро пожаловать. Это не должно сильно замедлить ваш сайт. Вы хотите сохранить его на сервере и загружать только нужные вам данные. –

0

Вы также можете посмотреть на GeoHash как способ ускорить поиск длинного/лат в пределах области (близости). Например, есть «плагины» на разных языках. GeoHash in Ruby очень проста в использовании.

0

MySQL также предоставляет возможность выполнять простые вычисления геоданных, которые могут помочь. https://www.percona.com/blog/2013/10/21/using-the-new-spatial-functions-in-mysql-5-6-for-geo-enabled-applications/

Получение актуальных данных в австралийском почтовом индексе может быть проблемой, поскольку AusPost больше не предоставляет свежий список бесплатно. Если вы работаете в Google Mapping, тогда должно быть хорошо, чтобы заполнить таблицу данными, полученными при запросе Google.

У меня есть список пригородов с почтовыми индексами и LAT/LNGS, что я использую внутренне, что вы можете скачать на http://www.computerpros.com.au/data/australian_suburbs.sql

Это является Mysql дамп со следующей структурой таблицы:

+----------+----------------------+------+-----+---------+-------+ 
| Field | Type     | Null | Key | Default | Extra | 
+----------+----------------------+------+-----+---------+-------+ 
| id  | int(10) unsigned  | NO |  | 0  |  | 
| name  | varchar(64)   | NO |  | NULL |  | 
| postcode | varchar(4)   | NO |  | NULL |  | 
| state | smallint(5) unsigned | NO |  | NULL |  | 
| lat  | float(10,6)   | NO |  | NULL |  | 
| lng  | float(10,6)   | NO |  | NULL |  | 
+----------+----------------------+------+-----+---------+-------+ 
Смежные вопросы