【发布时间】:2011-02-13 17:55:21
【问题描述】:
我在 CakePHP 中构建了一个列出企业的应用程序。大约有2000个条目,每个业务的经纬度坐标都在数据库中。
我现在正在尝试解决搜索功能。
会有一个输入框,用户可以在其中输入街道地址、城市或邮政编码,然后我希望它返回从数据库中找到的 11 个最近的企业。
我该怎么做呢?
【问题讨论】:
标签: php mysql cakephp geolocation distance
我在 CakePHP 中构建了一个列出企业的应用程序。大约有2000个条目,每个业务的经纬度坐标都在数据库中。
我现在正在尝试解决搜索功能。
会有一个输入框,用户可以在其中输入街道地址、城市或邮政编码,然后我希望它返回从数据库中找到的 11 个最近的企业。
我该怎么做呢?
【问题讨论】:
标签: php mysql cakephp geolocation distance
我使用Yahoo Geo Planet API 来识别与用户输入的搜索词相对应的地点。这通常匹配多个位置,因此您必须将它们呈现给用户以让他们选择正确的位置。然后,一旦您知道了正确的位置,并且它是 Yahoo API 提供的纬度,您就可以使用haversine formula 来获取离用户位置最近的企业。 this question的回答中有一个很好的例子。
【讨论】:
我会通过在该点周围创建一个正方形来解决此问题,以获得该点本身就是一个整体,因为您需要一个邮政编码数据库或 api,这往往需要花钱。无论是购买数据库还是每次查找。
至少按城市或类似地进行,您可能不确定,从 GMaps 中返回该城市的长纬度。
然后我会尝试在该点附近获得 4 个角 longlat 坐标。然后我可以在数据库中搜索介于两者之间的值。
无论哪种方式,我都会说这是一件棘手的事情,但问题很重要!有兴趣看看人们的建议。
【讨论】: