首先感谢GeoHash核心原理解析这篇文章让我明白了什么叫geohash
在这篇文章里,作者提出了几个使用geohash的注意点:
由于GeoHash是将区域划分为一个个规则矩形,并对每个矩形进行编码,这样在查询附近POI信息时会导致以下问题,比如红色的点是我们的位 置,绿色的两个点分别是附近的两个餐馆,但是在查询的时候会发现距离较远餐馆的GeoHash编码与我们一样(因为在同一个GeoHash区域块上),而 较近餐馆的GeoHash编码与我们不一致。这个问题往往产生在边界处。
![]()
解决的思路很简单,我们查询时,除了使用定位点的GeoHash编码进行匹配外,还使用周围8个区域的GeoHash编码,这样可以避免这个问题。
那么如何得到周围8个区域的geohash编码呢,作者没有提供更明确的思路,在网上也搜索不到相关的解决办法,所以在这里提大家提供我的思路。
看到这里,我假设各位已经清楚如何对经纬度进行geohash编码。
在对经度进行二分逼近时,落在左边区间为0,右边为1:
第一次划分:
第二次划分: