如何使用 GPS 信息搜索数据库?
Posted
技术标签:
【中文标题】如何使用 GPS 信息搜索数据库?【英文标题】:How to search a database using GPS information? 【发布时间】:2014-09-05 22:05:43 【问题描述】:我正在收集企业列表,并使用该信息收集街道地址、城市、州、邮编等。我想构建一个可以接受地址搜索输入或使用设备/浏览器的应用程序GPS 或 IP 生成一个,然后在我的数据库中查找特定地理范围内的企业。
我的问题是如何 (a) 创建或访问可用于搜索的地理数据数据库,以及 (b) 如何以限制(例如,英里)的方式存储数据?所以我可以说“这些企业离你不到 30 英里,而你离这家企业只有 2.8 英里”。
我知道 Google Maps 提供了一个 API,但通过阅读文档,我似乎必须在地图上显示该数据,而这并不真正在我想要做的范围内。我想以列表的形式呈现这些数据。
编辑:
因此,我需要 lat/long 和一些计算的终止。我如何将地址写为“密苏里州堪萨斯城任何街道 123”并将其转换为我可以存储的 LAT LONG?
【问题讨论】:
你不存储“距离”。您存储纬度/经度,然后即时计算距离:select id, .... where distance_calc($user_lat, $user_long) < $limit
将您的邮政编码转换为坐标,然后使用毕达哥拉斯定理确定与当前点的距离。
Marc B,太好了,太棒了。我已经编辑了这个问题并进行了一些跟进,但我也会在这里问。如何获取用户的地址并将其转换为纬度/经度,以便能够将其存储在数据库中?
【参考方案1】:
如果你愿意去微软 SQL Server,他们在 SQL 2008 中引入了geography
列类型。有内置的数据库操作可以从纬度/经度查找这些数据
见http://msdn.microsoft.com/en-us/library/cc280766.aspx
否则,当您将地址或其他类型的数据输入数据库时,您需要做的是对其进行地理定位,可能使用外部映射 API,例如http://api.mygeoposition.com/geopicker/
【讨论】:
以上是关于如何使用 GPS 信息搜索数据库?的主要内容,如果未能解决你的问题,请参考以下文章
如何使用数据库(mysql)中的gps位置在两个地理点之间找到pople?