【发布时间】:2011-10-21 21:11:21
【问题描述】:
我想在我的搜索字段中添加一项功能。 所以你可以写 Close to: Copenhagen (example)。
然后应该在哥本哈根(哥本哈根是丹麦的首都)周围/内部大约 5 公里范围内,获取其中的地址,并将它们显示为结果..
所以它需要所有地址,检查它们是否在哥本哈根周围 5 公里范围内,然后显示那些。
这可能吗?如果没有,任何类似的方法可以做到这一点?我应该调查什么?
【问题讨论】:
我想在我的搜索字段中添加一项功能。 所以你可以写 Close to: Copenhagen (example)。
然后应该在哥本哈根(哥本哈根是丹麦的首都)周围/内部大约 5 公里范围内,获取其中的地址,并将它们显示为结果..
所以它需要所有地址,检查它们是否在哥本哈根周围 5 公里范围内,然后显示那些。
这可能吗?如果没有,任何类似的方法可以做到这一点?我应该调查什么?
【问题讨论】:
您可以使用(例如)Google Maps API 将geocode 位置的文本描述(搜索词和地址)转换为 GPS 坐标位置。然后,您检查数据库中的哪些位置在搜索词位置的范围内。不过,该 API 的使用条款和条件要求您使用地理编码结果来显示 Google 地图。
虽然有效地确定“范围内”可能会很棘手,但您通常需要一个支持 GIS 的数据库来为您进行计算。一个很容易在任何数据库上实现的黑客捷径是在搜索词位置的北、东、南和西 5 公里(或任何你想要的距离)处取点,然后寻找纬度和经度在最小值之间的地址和给你的最大纬度和经度。 This page 列出了所需的公式。 (如果搜索区域靠近经度“环绕”的位置并且由于地球的曲率而不搜索矩形,则此方法将不起作用,但没有多少人搜索餐厅评论或北极或北极地区有什么太平洋中部。)
【讨论】:
你应该看看地理编码。
一种方法是使用 Google Maps API,它允许您将地址转换为坐标,然后您可以轻松地计算出一定距离内的地址。
看看: http://code.google.com/apis/maps/documentation/webservices/index.html
我敢肯定,如果您不喜欢“地理编码”,您会发现许多其他解决方案。
【讨论】: