CCLocationFetcher
Objective-C的自定义位置管理器
说明
对CoreLocation的封装。
将定位相关的代码从 Controller 中分离,封装到 NSObject 对象中。采用 block 回调的方式降低代码的分散度,方便调用亦易于获取位置信息。
使用方法
支持cocoapods,或直接将CCLocationFetcher文件夹拖入工程,引用。
CCLocationFetcher 对象调用 startWithCompletionHandler: 方法,返回一个存储定位信息的 LocationModel 对象,所需信息直接用点语法获取。以名为location对象为例,包含:
- location.longitude 经度
- location.latitude 纬度
- location.province 省/直辖市
- location.city 市
- location.subCity 区/县
- location.street 街道/路
- location.address 详细地址(从省开始到街道)
方法一(推荐)
用单例初始化对象并调用 startWithCompletionHandler: 方法即可。随用随调。
[[CCLocationFetcher sharedInstance] startWithCompletionHandler:^(LocationModel *location) {
NSLog(@"经度:%@--纬度:%@--地址:%@",location.longitude,location.latitude,location.address);
}];
方法二
传统方法初始化一个对象,调用startWithCompletionHandler:方法。对象必须是实例变量。
_fetcher = [[CCLocationFetcher alloc] init];
[_fetcher startWithCompletionHandler:^(LocationModel *location) {
NSLog(@"经度:%@--纬度:%@--地址:%@",location.longitude,location.latitude,location.address);
}];
注意
- 定位前请确保已设置网络和定位权限
- 方法一无局限性,可随时调用,推荐使用
- 方法二需要将对象设置为实例变量,存在一定局限性