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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值