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文件的下载

你可能感兴趣的:(iOS,Object-C,geohash)