”
思路对了,为了实现对经纬度比较,Redis 采用业界广泛使用的 GeoHash 编码,分别对经度和纬度编码,最后再把经纬度各自的编码组合成一个最终编码。...在进行第一次二分区时,经度范围[-180,180]会被分成两个子区间:[-180,0) 和[0,180](我称之为左、右分区)。
此时,我们可以查看一下要编码的经度值落在了左分区还是右分区。...比如对经度值等于 169.99 进行 4 位编码(N = 4,做 4 次分区),把经度区间[-180,180]分成了左分区[-180,0) 和右分区[0,180]。...将[90, 180] 分为[90, 135) 和 [135, 180],这次落在左分区,编码 ‘0’。
如此,最后我们就得到一个 4 位的编码。
而纬度的编码思路跟经度也是一样的,不再赘述。...合并经纬度编码
假如计算的经纬度编码分别是 11011 和00101`,目标编码第 0 位则从经度第 0 位的值 1 作为目标值,目标编码的第 1 位则从纬度第 0 位值 0 作为目标值,以此类推: