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

4

3 回答 3

3

您需要找到一个包含每个邮政编码的经度和纬度的数据库。获得经度和纬度后,您将使用 hassine 公式 ( http://www.codecodex.com/wiki/Calculate_Distance_Between_Two_Points_on_a_Globe ) 计算点之间的距离。要进行邻近搜索,您必须计算从起点到数据集中所有点的距离。您也可以考虑使用边界框,然后在该边界框内搜索点。像 PostGIS 这样的地理空间数据库内置了可以帮助解决所有这些问题的功能。

于 2009-12-02T05:57:58.237 回答
0

您可能还希望将GeoHash视为一种加快在区域内(邻近度)搜索经度/纬度的方法。有各种语言的“插件”,例如。Ruby中的 GeoHash 非常易于使用。

于 2010-07-13T08:18:01.367 回答
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 获取的数据填充表格。

我有一个我在内部使用的带有邮政编码和纬度/经度的郊区列表,您可以在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    |       |
+----------+----------------------+------+-----+---------+-------+
于 2015-10-01T05:00:22.203 回答