基于CLGeocoder - 反地理编码
2015-12-05 11:36
218 查看
iOS中CoreLocatio框架中的CLGeocoder 类不但为我们提供了地理编码方法,而且还提供了反地理编码:
同样需要导入框架:
对象,该对象类型为 CLGeocodeCompletionHandler,实际上是一个 block 对象
这个对象中传递了2个参数,其中placemark:里面装了CLPlacemark对象
步骤:
1、创建地理编码对象
2、获取用户的地理坐标(经纬度)
3、根据地理坐标创建CLLocation对象
4、根据CLLocation对象获取对象坐标信息
< Demo如下 >:
控制面板信息:
同样需要导入框架:
#import <CoreLocation/CoreLocation.h>反地理编码方法:
- (void)reverseGeocodeLocation:(CLLocation *)location completionHandler:(CLGeocodeCompletionHandler)completionHandler;同样当反地理编码完成时,会调用 completionHandler
对象,该对象类型为 CLGeocodeCompletionHandler,实际上是一个 block 对象
这个对象中传递了2个参数,其中placemark:里面装了CLPlacemark对象
步骤:
1、创建地理编码对象
2、获取用户的地理坐标(经纬度)
3、根据地理坐标创建CLLocation对象
4、根据CLLocation对象获取对象坐标信息
< Demo如下 >:
@interface ViewController () /** * 地理编码对象 */ @property (nonatomic ,strong) CLGeocoder *geocoder; #pragma mark - 反地理编码 - (IBAction)reverseGeocode; @property (weak, nonatomic) IBOutlet UITextField *longtitudeField; @property (weak, nonatomic) IBOutlet UITextField *latitudeField; @property (weak, nonatomic) IBOutlet UILabel *reverseDetailAddressLabel; @end @implementation ViewController #pragma mark - 反地理编码响应 - (void)reverseGeocode { // 1.获取用户输入的经纬度 NSString *longtitude = self.longtitudeField.text; NSString *latitude = self.latitudeField.text; if (longtitude.length == 0 || longtitude == nil || latitude.length == 0 || latitude == nil) { NSLog(@"请输入经纬度"); return; } // 2.根据用户输入的经纬度创建CLLocation对象 CLLocation *location = [[CLLocation alloc] initWithLatitude:[latitude doubleValue] longitude:[longtitude doubleValue]]; // 116.403857,39.915285 // 3.根据CLLocation对象获取对应的地标信息 [self.geocoder reverseGeocodeLocation:location completionHandler:^(NSArray *placemarks, NSError *error) { for (CLPlacemark *placemark in placemarks) { NSLog(@"%@ %@ %f %f", placemark.name, placemark.addressDictionary, placemark.location.coordinate.latitude, placemark.location.coordinate.longitude); self.reverseDetailAddressLabel.text = placemark.locality; } }]; } #pragma mark - 懒加载,创建地理编码对象 - (CLGeocoder *)geocoder { if (!_geocoder) { _geocoder = [[CLGeocoder alloc] init]; } return _geocoder; }效果图如下:
控制面板信息:
相关文章推荐
- Spark on yarn配置项说明与优化整理
- Java多态的理解
- Linux网络服务之DNS
- 对李博士随机网络网络演算学位论文的学习
- 七大经典算法之冒泡排序
- Code Forces 592 C. The Big Race(数论)
- [LeetCode]99. Container with Most Water最大容积
- Java并发专题 带返回结果的批量任务执行 CompletionService
- DDD实施经验分享—价值导向、从上往下进行(圈内第一个吃螃蟹DDD实施方案)
- android 各国时区
- Android Training - 创建自定义的Views(Lesson 4 - 优化Views)
- 第一天:类和对象(^_^!)
- Android Camera开发:扫描二维码,周期性循环自动聚焦auto focus挂掉原因分析(preview is not enabled)
- autoscan; aclocal; autoconf; automake --add-missing; ./configure; make
- asp.net获取当前网址url的各种属性(文件名、参数、域名 等)的代码
- Discuz云平台站点信息同步失败,An unknown error occurred. May be DNS Error.
- 数据库常用操作集合_1
- 字符串的判断的StringUtil中isEmpty和isBlank用法
- Linux下shell脚本启动jar包
- Android Training - 创建自定义的Views(Lesson 3 - 处理View的交互性)