第三种就是利用数据库的空间索引来做,貌似MySQL本身就支持的,用R Tree实现的,效率更高。
1、把经纬度换成整数。 2、不算圆型算方型,避开乘方根号运算,直接 between 经度 and between 纬度。 3、确定了这个方内的人后,再进行乘方(但不开根号)排序就行。
查找 1000 米以内的人,数据库设计和查询如何实现这个功能? - 数据库设计
快使用开源工具,横横哈嘿,快打开源代码,嘿嘿哈横。
用mongodb,自带这类算法
大家的坐标保存起来,然后把你的坐标与大家的坐标求距离就行了。
geohash | rtree
方案:geohash + redis set
时间复杂度:O(1)
空间复杂度:O(n),挺省的,因为redis的key很短,参考下表:
Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn