PHP MySQL 最接近邮政编码

Posted

技术标签:

【中文标题】PHP MySQL 最接近邮政编码【英文标题】:PHP MySQL nearest to postcode 【发布时间】:2011-06-08 21:51:31 【问题描述】:

您好,我发现这篇文章很有帮助,但不幸的是我无法让它发挥作用。

http://davidsimpson.me/2008/09/28/find-nearest-store-page-using-php-mysql-and-google-maps/

我在 MySQL 表中有一个商店列表,其中包含邮政编码、经度、纬度和各种其他商店特定信息。

我希望用户能够在表单上输入他们的邮政编码,指定以英里为单位的最大距离(即下拉菜单、10 英里内、20 英里内等),然后提取结果从 MySQL 数据库中排序。

任何人都可以对此有所了解。

问候

【问题讨论】:

【参考方案1】:

虽然该示例中提供的方法有效,但它必须计算表中每一行的距离。这在大规模工作时效率太低了。看看this tutorial。它使用 MySQL 中的特殊数据类型来获取坐标,并且可以非常快速地搜索。希望它能给你一个从哪里开始的基础。

您的解决方案可能更直接。它将需要所有邮政编码的列表以及所有商店的列表。由于您的所有输入和输出都是已知因素,您可以将其预先计算到“缓存”表中,这将为您提供非常快速的结果。创建一个名为 StoreDistances10Miles 的表(猜测数据类型和命名约定):

postcode CHAR(8) INDEXED, store_id INT(8), metresAway INT(8)

遍历每个邮政编码,按距离对商店进行排序,并将 10 英里内的商店保存到表中。现在,当您想按邮政编码搜索时,只需按邮政编码搜索 StoreDistances10Miles 即可获得您的列表。确保索引postcode

您需要为要在您的网站上提供的每个距离复制一个表格。

【讨论】:

【参考方案2】:

好吧,他清楚地给出了如何获得里程,所以您需要使用下拉菜单将“里程

【讨论】:

如果您查看最初的 SQL 语句,它包含 $longitude 和 $latitude 但这些 PHP 变量事先没有被赋予任何值。是我遗漏了什么还是示例 PHP 代码不完整...? 我得到的印象是用户所在位置的经度和纬度,来自他在顶部解释的公式。

以上是关于PHP MySQL 最接近邮政编码的主要内容,如果未能解决你的问题,请参考以下文章

Google Maps API - 获取最接近邮政编码的点

获取当前邮政编码,并显示来自 NSArray 的最接近的结果

SQL中最接近的部分字符串匹配

如何获得两个地方之间的准确或(接近准确)距离? mysql/php

邮政编码查询

从纬度,经度获取邮政编码