Как реализовать поиск по близости с помощью почтового индекса? - PullRequest
3 голосов
/ 02 декабря 2009

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

Ответы [ 3 ]

3 голосов
/ 02 декабря 2009

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

0 голосов
/ 01 октября 2015

MySQL также предоставляет возможность для выполнения простых расчетов Geo-расстояний, которые могут помочь. 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.

У меня есть список пригородов с почтовыми индексами и латами, которые я использую для внутреннего использования, которые вы можете скачать по адресу 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    |       |
+----------+----------------------+------+-----+---------+-------+
0 голосов
/ 13 июля 2010

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

...