在日常生活中,我们经常会有很多和地理相关的一些应用,比如:地图导航,附近的人,查找某些地标等等,以前我们会选择问路,而随着智能设备的更新和升级,现在我们仅仅只需要一个手机,打开一个地图APP,即可快速查找自己想要的路线或者信息了。
那么,附近的一个建筑或者商店,是通过怎样的形式,让其可以在手机上展示出来的呢?
比如:周末了,躺在床上,使用手机下单,寻找外卖美食...这些美食店信息是怎么在手机上进行展示的呢,它和我所在的距离是怎么计算出来的呢? 这时候,可能就需要用到GeoHash这种算法了。前段时间一个朋友问到过我关于GeoHash的相关知识,但是对这种算法,只是有所了解,并没有深入去探索内部的实现,在此,给它进行自我解析与记录。
先简单介绍一下GeoHash算法,在日常生活中,我们对某一坐标的定位,一半都是使用经纬度来进行标记的。比如:常营地铁站(lat:39.9257460000,lng:116.5998310000),我们获取一个区域的位置,是使用一个二维数组对其进行标记的,它表示的不是一个具体的点,而是泛指一片区域,区域的范围与经纬度的取值精度直接相关。
当我拿到常营地铁站的经纬度后,通过GeoHash这种算法进行计算后,获取到一个可比较的字符串,具体计算过程如下:
同样,对纬度也进行相对应的算法进行计算得到一个二进制值(对经纬度取值范围越小,精度越高,所表示区域范围越小),在此省去计算过程。