如何进行基于位置的搜索
Posted
技术标签:
【中文标题】如何进行基于位置的搜索【英文标题】:how to do location based search 【发布时间】:2009-03-05 15:58:20 【问题描述】:我需要开发一种解决方案,让用户能够根据城市和州进行搜索。用户应该能够请求搜索结果不仅包括该城市和州的匹配项,还包括 25、50、100 英里半径范围内的匹配项。我看到工作网站做这种事情。这是如何完成的?是否有供应商为其提供开放 API?
谢谢
【问题讨论】:
【参考方案1】:您正在寻找的似乎是一个 GIS(地理信息系统),其中每条(或部分)信息都与其地理位置相关联。这样的系统允许对那些地理位置执行空间搜索,例如。 “给我这个位置 5 英里半径范围内的所有商店,这些商店销售特定产品”(也可以结合空间搜索和传统搜索)。
现在您可以使用一些技术示例:
-
PostgreSQL + Postgis:这种数据库和地理扩展的开源组合足以满足大多数基本用户需求。 You can start from here
mysql Spatial
Oracle Spatial
ArcSde (ESRI)
【讨论】:
【参考方案2】:您需要从包含城市、州和邮政编码及其相应纬度和经度的数据库开始。 Here's a link 到一个可以免费下载此类数据库的站点。
接下来,您需要一种算法来查找在用户输入的城市/邮编 X 英里半径范围内的城市/邮编。 Here's another link 应该解释如何做到这一点。
【讨论】:
当然,这些数据库价格不菲,因为它是如此宝贵的商品...... 如果您想要最新最好的最新版本,那么可以。但您通常可以免费找到 99% 完整的旧数据库。 Eric,我无法访问您的第二个链接【参考方案3】:你可能想看看GeoNames。
我为 GeoNames 编写了一个 .NET WCF 客户端,可用 here。
【讨论】:
以上是关于如何进行基于位置的搜索的主要内容,如果未能解决你的问题,请参考以下文章