OC geohash

項目中要用到geohash 來傳輸經緯度,一開始對geohash 一點都不懂,經過了解之後知道了個大概,下面分享我瀏覽獲取的有用地址:

1、初步瞭解
geohash 用一個字符串表示經度和緯度兩個座標。geohash表示的並不是一個點,而是一個矩形區域。比如編碼wx4g0ec19,它表示的是一個矩形區域。 使用者可以發佈地址編碼,既能表明自己位於北海公園附近,又不至於暴露自己的精確座標,有助於隱私保護。

2、geohash算法

  • 根據經緯度計算GeoHash二進制編碼

  • 組碼(將經緯度的兩個二進制編碼合成新串)

  • 使用用0-9、b-z(去掉a, i, l, o)這32個字母進行base32編碼

詳情請查看:GeoHash核心原理解析

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;
}

.m文件的下載

發佈了78 篇原創文章 · 獲贊 105 · 訪問量 24萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章