【问题标题】:Find the closest locations to a given address查找离给定地址最近的位置
【发布时间】:2011-02-13 17:55:21
【问题描述】:

我在 CakePHP 中构建了一个列出企业的应用程序。大约有2000个条目,每个业务的经纬度坐标都在数据库中。
我现在正在尝试解决搜索功能。

会有一个输入框,用户可以在其中输入街道地址、城市或邮政编码,然后我希望它返回从数据库中找到的 11 个最近的企业。

我该怎么做呢?

【问题讨论】:

标签: php mysql cakephp geolocation distance


【解决方案1】:

我使用Yahoo Geo Planet API 来识别与用户输入的搜索词相对应的地点。这通常匹配多个位置,因此您必须将它们呈现给用户以让他们选择正确的位置。然后,一旦您知道了正确的位置,并且它是 Yahoo API 提供的纬度,您就可以使用haversine formula 来获取离用户位置最近的企业。 this question的回答中有一个很好的例子。

【讨论】:

  • 这真的很有帮助,而且更接近我正在寻找的东西,谢谢!
【解决方案2】:

我会通过在该点周围创建一个正方形来解决此问题,以获得该点本身就是一个整体,因为您需要一个邮政编码数据库或 api,这往往需要花钱。无论是购买数据库还是每次查找。

至少按城市或类似地进行,您可能不确定,从 GMaps 中返回该城市的长纬度。

然后我会尝试在该点附近获得 4 个角 longlat 坐标。然后我可以在数据库中搜索介于两者之间的值。

无论哪种方式,我都会说这是一件棘手的事情,但问题很重要!有兴趣看看人们的建议。

【讨论】:

  • 美国人口普查数据可用于生成人口加权的经纬度与邮政编码数据库。我过去使用过这些数据。如果您四处搜索,您会发现一个免费的经纬度与邮政编码数据库。然后找到相关邮政编码附近一个正方形内的所有邮政编码是一种非常快速且容易获得非常好的邻近度查找的方法。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-06-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-08-13
  • 2011-04-24
  • 1970-01-01
相关资源
最近更新 更多