标签 golang 下的文章

Geohash取临近区块的强化

geohash是常用来做地理位置查询,是LBS项目中常用的技术。详细原理就不细说了,可以参考如下链接:

源码:

一般来说,取当前坐标临近坐标常规做法是取当前坐标所在区块的周边一圈区块,即一个九宫格,能够得到充足的数据量,同时避免边界问题。但是实际项目使用过程当中发现除了边界问题,还有一个精度问题。当geohash位数多的情况下,精度高,区块面积小,那么范围内的坐标点就会比较少,甚至出现没有的情况,如果位数少,那么区块面积大,范围内坐标点过多,那么距离计算量就会比较大。在golang版本的源码中,提供了GetNeighbors方法,直接取到九宫格,但是在上述场景下就会比较鸡肋。于是扩展了一下,以类似水波扩散的方式取数据,将每一圈的区块全部取出来。

- 阅读剩余部分 -