根据用户当前位置查询位置数据库

0 投票
2 回答
761 浏览
提问于 2025-04-18 12:18

我有一个存储地点的数据库,里面有两个字段:经度和纬度。当用户打开首页时,我想获取他们的位置,然后找出数据库中所有在用户一定距离范围内的地点。

到目前为止,我想过可以尝试计算数据库中每个地点与用户之间的距离,但如果数据库里的记录很多,这样做可能会花费很长时间。

我正在用Python来开发我的应用,但我使用JavaScript和谷歌地图API来获取用户的位置。

有没有人知道我该用什么方法来实现这个功能?

谢谢大家的帮助!

2 个回答

1

如果你想在关系型数据库中进行基于位置的查询,PostgreSQL 比 MySQL 更成熟。

如果你对 NoSQL 比较熟悉,MongoDB 的地理空间查询功能非常不错。

参考资料:

MongoDB 的地理空间索引

MySQL 空间数据类型文档

1

你的距离可以转换成一个角度,这个角度可以加到你的经度和纬度上,也可以减去。然后你可以根据这个范围来筛选你的数据库,比如找到那些经度在这个角度范围内的元素。我觉得这样应该会比较快。

注意,如果你有[lat_min, lat_max]和[long_min, long_max],你其实是在画一个矩形,而不是一个圆,这可能对你来说是可以接受的,也可能不是。如果你需要更精确的结果,你可以开始计算这个小范围内的实际距离,这样的计算速度应该还是比对数据库中每个点计算距离要快。

编辑

@dandavis让我注意到... MySQL和MongoDB似乎都支持地理空间查询,这真不错!这里有一篇关于MySQL功能的博客,其中包括了开发者网站的链接。MongoDB的地理空间查询文档可以在这里找到。

撰写回答