博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
地理编码
阅读量:7121 次
发布时间:2019-06-28

本文共 2232 字,大约阅读时间需要 7 分钟。

 

1、使用CLGeocoder可以完成“地理编码”和“反地理编码”

 

(1)地理编码:根据给定的地名,获得具体的位置信息(比如经纬度、地址的全称等)

(2)反地理编码:根据给定的经纬度,获得具体的位置信息

 

2、地理编码方法

 

(1)编码

- (void)geocodeAddressString:(NSString *)addressString completionHandler:(CLGeocodeCompletionHandler)completionHandler;

(2)反编码

- (void)reverseGeocodeLocation:(CLLocation *)location completionHandler:(CLGeocodeCompletionHandler)completionHandler;

 

3、CLGeocodeCompletionHandler

 

(1)当地理\反地理编码完成时,就会调用CLGeocodeCompletionHandler

   typedef void (^CLGeocodeCompletionHandler)(NSArray *placemarks, NSError *error);

 

(2)这个block传递2个参数

  error :当编码出错时(比如编码不出具体的信息)有值

  placemarks :里面装着CLPlacemark对象

 

4、CLPlacemark的字面意思是地标,封装详细的地址位置信息

 

(1)地理位置

@property (nonatomic, readonly) CLLocation *location;

 

(2)区域

@property (nonatomic, readonly) CLRegion *region;

 

(3)详细的地址信息

@property (nonatomic, readonly) NSDictionary *addressDictionary;

 

(4)地址名称

@property (nonatomic, readonly) NSString *name;

 

(5)城市

@property (nonatomic, readonly) NSString *locality;

 

 

5、示例代码

 

#import "ViewController.h"#import 
@interface ViewController ()@property (nonatomic, strong) CLGeocoder *geocode;@end@implementation ViewController#pragma mark - 懒加载- (CLGeocoder *)geocode { if (!_geocode) { _geocode = [[CLGeocoder alloc]init]; } return _geocode;}- (IBAction)geoCodeClick:(UIButton *)sender { //北京 经纬度 [self.geocode geocodeAddressString:@"东莞" completionHandler:^(NSArray
* _Nullable placemarks, NSError * _Nullable error) { //地标 CLPlacemark *pl = [placemarks firstObject]; //经纬度 CLLocationCoordinate2D coordinate = pl.location.coordinate; NSLog(@"%f %f",coordinate.latitude,coordinate.longitude); for ( CLPlacemark *pl in placemarks) { NSLog(@"%@",pl.name); } }];}- (IBAction)unGeoClick:(UIButton *)sender { CLLocation *loction = [[CLLocation alloc]initWithLatitude:23 longitude:118]; [self.geocode reverseGeocodeLocation:loction completionHandler:^(NSArray
* _Nullable placemarks, NSError * _Nullable error) { //地址 字符串 NSLog(@"%@",error); CLPlacemark *pl = [placemarks firstObject]; NSLog(@"%@,%@",pl.name,pl.locality); }];} @end

 

转载于:https://www.cnblogs.com/cleven/p/5432240.html

你可能感兴趣的文章
[arm驱动概念篇]Linux内存管理(上)
查看>>
白细胞计数
查看>>
实验8 非阻塞I/O
查看>>
更改mysql数据库所在目录
查看>>
如何查找局域网故障
查看>>
java多线程 -- Condition 控制线程通信
查看>>
java多线程 -- 线程八锁
查看>>
AngularJS学习笔记1
查看>>
Linux-系统时钟
查看>>
LINUX 安装错误笔记ins_ctx.mk
查看>>
Linq实现点击率问题
查看>>
VMware vSphere 5.1 群集深入解析(二十三)- 数据存储架构与设计
查看>>
GitLab: API is not accessibl
查看>>
LVM分区在线扩容
查看>>
OpenSSL介绍
查看>>
Redis 集群部署
查看>>
XenMotion 与HA的区别
查看>>
|深入浅出|数据库范式
查看>>
SAP R3 Oracle 9i ORA-06413 连接未打开错误
查看>>
Liferay 启动过程分析13-初始化Resource Action
查看>>