iOS中CoreLocatio框架中的CLGeocoder为我们提供了地理编码方法:
首先需要导入框架
#import <CoreLocation/CoreLocation.h>
地理编码方法有三种:

- (void)geocodeAddressDictionary:(NSDictionary *)addressDictionary completionHandler:(CLGeocodeCompletionHandler)completionHandler;
- (void)geocodeAddressString:(NSString *)addressString completionHandler:(CLGeocodeCompletionHandler)completionHandler;
- (void)geocodeAddressString:(NSString *)addressString inRegion:(nullable CLRegion *)region completionHandler:(CLGeocodeCompletionHandler)completionHandler;

下面简单的介绍其中一种常用的方法:步骤:
1、获取用户输入的地理位置
2、创建地理编码对象<CLGeocoder对象>
3、利用地理编码对象编码
3.1、当编码完成时,会调用 completionHandler对象,该对象类型为 CLGeocodeCompletionHandler,实际上是一个 block 对象
这个对象中传递了2个参数,其中placemark:里面装了CLPlacemark对象

根据文档,可以知道CLPlacemark对象中包含了 该位置的经纬度以及城市/区域/国家代码/邮编等等...信息
由此我们可以根据返回参数placemark获取到我们需要的数据
< Demo如下 >:

@interface ViewController ()
#pragma mark - 地理编码
//监听地理编码点击事件
- (IBAction)geocodeBtnClick;// 需要编码的地址
@property (weak, nonatomic) IBOutlet UITextField *addressField;//经度
@property (weak, nonatomic) IBOutlet UILabel *longitudeLabel;//纬度
@property (weak, nonatomic) IBOutlet UILabel *latitudeLabel;//详情
@property (weak, nonatomic) IBOutlet UILabel *detailAddressLabel;//地理编码对象
@property (nonatomic ,strong) CLGeocoder *geocoder;@end
#pragma mark - 地理编码响应
- (void)geocodeBtnClick
{// 0.获取用户输入的位置NSString *addressStr = self.addressField.text;if (addressStr == nil || addressStr.length == 0) {NSLog(@"请输入地址");return;}// 1.创建地理编码对象// 2.利用地理编码对象编码// 根据传入的地址获取该地址对应的经纬度信息[self.geocoder geocodeAddressString:addressStr completionHandler:^(NSArray *placemarks, NSError *error) {if (placemarks.count == 0 || error != nil) {return ;}// placemarks地标数组, 地标数组中存放着地标, 每一个地标包含了该位置的经纬度以及城市/区域/国家代码/邮编等等...// 获取数组中的第一个地标CLPlacemark *placemark = [placemarks firstObject];self.latitudeLabel.text = [NSString stringWithFormat:@"%f", placemark.location.coordinate.latitude];self.longitudeLabel.text = [NSString stringWithFormat:@"%f", placemark.location.coordinate.longitude];NSArray *address = placemark.addressDictionary[@"FormattedAddressLines"];NSMutableString *strM = [NSMutableString string];for (NSString *str in address) {[strM appendString:str];}self.detailAddressLabel.text = strM;}];}#pragma mark - 懒加载, 1.创建地理编码对象
- (CLGeocoder *)geocoder
{if (!_geocoder) {_geocoder = [[CLGeocoder alloc] init];}return _geocoder;
}

效果图如下:


转载于:https://www.cnblogs.com/knightguang/p/9605822.html

基于CLGeocoder - 地理编码相关推荐

  1. 地图的相关使用(定位,地理编码,导航)

    概述 在移动互联网时代,很多社交类,团购类app都引入了地图,地图能解决用户的很多生活琐事,比如: 导航:去任意陌生的地方,汽车导航等 周边:找餐馆.找酒店.找银行.找电影院 总之,目前地图和定位功能 ...

  2. 基于Leaflet和高德Web API扩展地理编码服务

    需求背景: 需求很简单就是想调用高德地图的地理编码服务,单独扩展一个类出来. 参考地址: Leaflet类扩展:https://leafletjs.com/examples/extending/ext ...

  3. H5新特性百度地图SDK--API引入、地图控件、地理编码与逆地理编码、地图标注、路径规划(基于2.0)

    一.API基本使用 1.1 大致流程 打开,百度地图官网 登录或者注册一个百度账号,并完成相关验证 登陆并申请成为开发者 在百度地图开发平台的首页选择控制台,在控制台中创建应用 创建好应用以后就能在控 ...

  4. iOS项目开发— CoreLocation的定位服务和地理编码与发编码实现

      一.CoreLocation简介 1.在移动互联网时代,移动app能解决用户的很多生活琐事,比如 (1)导航:去任意陌生的地方 (2)周边:找餐馆.找酒店.找银行.找电影院 2.在上述应用中,都用 ...

  5. ArcGIS for qml - 地址地标转换为经纬度(地理编码)

    实现输入地址地标转换为其经纬度 本文链接:地理编码 作者: 狐狸家的鱼 Github: 八至 一.地理编码 1.地理编码含义 地址编码(或地理编码)是使用地址中包含的信息来插入地图上的相应位置的过程. ...

  6. HarmonyOS之设备定位的使用与地理编码的转化

    一.简介 ① 设备位置 移动终端设备已经深入人们日常生活的方方面面,如查看所在城市的天气.新闻轶事.出行打车.旅行导航.运动记录等,这些习以为常的活动,都离不开定位用户终端设备的位置. 当用户处于这些 ...

  7. ios 百度地图指定区域_ios百度地图的使用(普通定位、反地理编码)

    iOS定位 - 普通定位(没有地图) - 反地理编码(得到具体位置),下面通过代码给大家详解,代码如下: #import 使用到的头文件 要引入CoreLocation这个包 使用的代理名称 //1. ...

  8. IOS开发地理编码与反向编码

    IOS开发地理编码与反向编码 #import <CoreLocation/CoreLocation.h> 选中项目导入相应的框架 // // LJReveceGeocoderViewCon ...

  9. 调用高德逆地理接口_地理编码与逆地理编码

    本章主要介绍如何将地址描述信息和地理坐标做相互转化,主要包括以内容:正向地理编码 逆向地理编码 地理编码服务 地理编码包含正向地理编码和逆向地理编码两种:正向地理编码: 将地址描述信息转换成地理坐标( ...

最新文章

  1. cisco路由器基本实验之三 动态路由之RIP协议的配置(Boson NetSim)
  2. MxGraph从入门到精通之3:设置图形样式
  3. 讨论计算机在学术领域的应用,BGPLUS实地科研 | 卡内基梅隆大学 | 计算机、人工智能:在科学实验领域的应用...
  4. 体验最火的敏捷-SCRUM!(网络直播课程 免费)
  5. [Swift]loadNibNamed方法
  6. 中山大学计算机类专业分数线,中山大学计算机类专业2016年在广东理科高考录取最低分数线...
  7. Python字符串格式化--formate()的应用
  8. Win10下安装gcc、g++、make
  9. Android 文件系统路径
  10. 2019牛客多校第二场F Partition problem(暴搜)题解
  11. recyclerview 横向卡片效果_UI设计中卡片式应如何设计
  12. 21天学通java不好_21天学通Java_怎么样学好Java,学Java-IT培训网
  13. web前端优化--图片优化
  14. 【DSP】【第二篇】了解C6678和创建工程
  15. MySQL安全你不知道的事
  16. 计算机英特尔显卡在哪找,英特尔®显卡和 Windows 7 * 常见问题解答
  17. php加cnzz,Vue单页面中添加cnzz统计
  18. React Native_React Native组件(ListViewFlatListSectionList)
  19. Citespace安装【Version Check】Your version‘s status cannot be verified due to a network connection issue
  20. Cadence Allegro PCB设计88问解析(二) 之 Allegro中Artwork层复用(导入导出)

热门文章

  1. linux小小输入法 不能中文,在centos 下安装小小输入法存在的问题
  2. java web随机抽取_java实现随机抽取奖品工具类
  3. linux mysql cron_定时MySQL动作-Linux下用Cron现定时执行脚本
  4. word2vec模型评估_【新书】从Word2Vec到BERT的自然语言处理嵌入进展,附下载
  5. cmd查看当前python安装路径_NotePad++上配置Python
  6. 多核处理器_多核处理器还能走多远?2050年用上1024核CPU
  7. 会议室时间预约前端_号外!会议室预约流程为您贴心上线
  8. html使div内部元素水平排列_元素周期表探讨
  9. 不同品牌的内存条可以混用吗_混用不同品牌护肤品的技巧
  10. linux mrtg 进程名称,Linux上的MRTG流量监控中心