項目中要用到geohash 來傳輸經緯度,一開始對geohash 一點都不懂,經過了解之後知道了個大概,下面分享我瀏覽獲取的有用地址:
1、初步瞭解
geohash 用一個字符串表示經度和緯度兩個座標。geohash表示的並不是一個點,而是一個矩形區域。比如編碼wx4g0ec19,它表示的是一個矩形區域。 使用者可以發佈地址編碼,既能表明自己位於北海公園附近,又不至於暴露自己的精確座標,有助於隱私保護。
2、geohash算法
根據經緯度計算GeoHash二進制編碼
組碼(將經緯度的兩個二進制編碼合成新串)
使用用0-9、b-z(去掉a, i, l, o)這32個字母進行base32編碼
詳情請查看:GeoHash核心原理解析
3、OC中的調用
在網搜索了很久,沒找到OC的經緯度轉geohash的類,最終找到 C的,在OC中調用C的就OK了。
#import "geohash.h"
/**
* 將經緯度轉成 geohash
*
* @param lat 緯度
* @param lon 經度
* @param length 長度
*
* @return NSString 返回geohash
*/
+ (NSString *)getGeohash:(CGFloat)lat andLon:(CGFloat)lon andLength:(int)length{
char *hash = GEOHASH_encode(lat,lon,length); // 通過 geohash.h C文件 獲取 geohash 值
NSString *string = [NSString stringWithFormat:@"%s",hash]; // 將char 轉成 string
return string;
}