iOS地址编码解析
- (void)viewDidLoad
{
[super viewDidLoad];
// 创建地址解析器
self.geocoder = [[CLGeocoder alloc] init];
}
- (IBAction)encodeTapped:(id)sender
{
// 获取用户输入的地址字符串
NSString* addr = self.addrField.text;
if(addr != nil && addr.length > 0)
{
[self.geocoder geocodeAddressString:addr
completionHandler: ^(NSArray *placemarks, NSError *error)
{
// 如果解析结果的集合元素的个数大于1,表明解析得到了经度、纬度信息
if (placemarks.count > 0)
{
// 只处理第一个解析结果,实际项目中可使用列表让用户选择
CLPlacemark* placemark = placemarks[0];
CLLocation* location = placemark.location;
self.resultView.text = [NSString stringWithFormat:
@"%@的经度为:%g,纬度为:%g" , addr ,
location.coordinate.longitude ,
location.coordinate.latitude ];
}
// 没有得到解析结果。
else
{
// 使用UIAlertView提醒用户
[[[UIAlertView alloc] initWithTitle:@"提醒"
message:@"您输入的地址无法解析" delegate:nil
cancelButtonTitle:@"确定" otherButtonTitles: nil]
show];
}
}];
}
}
- (IBAction)reverseTapped:(id)sender
{
NSString* longitudeStr = self.longitudeField.text;
NSString* latitudeStr = self.latitudeField.text;
if(longitudeStr != nil && longitudeStr.length > 0
&& latitudeStr != nil && latitudeStr.length > 0)
{
// 将用户输入的经度、纬度封装成CLLocation对象
CLLocation* location = [[CLLocation alloc]
initWithLatitude:[latitudeStr floatValue]
longitude:[longitudeStr floatValue]];
[self.geocoder reverseGeocodeLocation:location completionHandler:
^(NSArray *placemarks, NSError *error)
{
// 如果解析结果的集合元素的个数大于1,表明解析得到了经度、纬度信息
if (placemarks.count > 0)
{
// 只处理第一个解析结果,实际项目可使用列表让用户选择
CLPlacemark* placemark = placemarks[0];
// 获取详细地址信息
NSArray* addrArray = [placemark.addressDictionary
objectForKey:@"FormattedAddressLines"];
// 将详细地址拼接成一个字符串
NSMutableString* addr = [[NSMutableString alloc] init];
for(int i = 0 ; i < addrArray.count ; i ++)
{
[addr appendString:addrArray[i]];
}
self.resultView.text = [NSString stringWithFormat:
@"经度:%g,纬度:%g的地址为:%@" ,
location.coordinate.longitude ,
location.coordinate.latitude , addr];
}
// 没有得到解析结果。
else
{
// 使用UIAlertView提醒用户
[[[UIAlertView alloc] initWithTitle:@"提醒"
message:@"您输入的地址无法解析" delegate:nil
cancelButtonTitle:@"确定" otherButtonTitles: nil]
show];
}
}];
}
}
iOS地址编码解析的更多相关文章
- iOS - JSON 数据解析
iOS - JSON 数据解析 前言 NS_CLASS_AVAILABLE(10_7, 5_0) @interface NSJSONSerialization : NSObject @availab ...
- iOS面向编码|iOSVideoToolbox:读写解码回调函数CVImageBufferRef的YUV图像
iOS面向编码|iOSVideoToolbox:读写解码回调函数CVImageBufferRef的YUV图像 本文档基于H.264的解码,介绍读写Video Toolbox解码回调函数参数CVImag ...
- iOS push全方位解析(二)【译文】"——生成OpenSSL证书,Provisioning Profile
这是一篇来自raywenderlich的教程,内容翔实!结构简单透彻.讲解循序渐进.文章质量上乘!是一篇难的的博文!使用半瓶的英语水平翻译了一下: 1.[iOS push全方位解析](一) push的 ...
- iOS开发 XML解析和下拉刷新,上拉加载更多
iOS开发 XML解析和下拉刷新,上拉加载更多 1.XML格式 <?xml version="1.0" encoding="utf-8" ?> 表示 ...
- 基于PHP的地址智能解析案例-快宝开放平台
快宝地址智能解析,批量录入收件人.发件人最好的解决方案,广泛应用于快递行业,电商行业,ERP应用等. 一.对接前准备 注册快宝开放平台,获得开发者账号,查看如何注册. 二.对接联调 快宝开放平台支持多 ...
- 【安全开发】IOS安全编码规范
申明:本文非笔者原创,原文转载自:https://github.com/SecurityPaper/SecurityPaper-web/blob/master/_posts/2.SDL%E8%A7%8 ...
- iOS使用TFHpple解析html
iOS 开发中解析html 网上有很多写好的解析框架 今天就来讲一下如何用框架TFHpple来解析html 使用TFHpple解析html github地址:https://github.com/to ...
- ios 表情编码
感受 :可以做自定义键盘时候用 很方便 还可以在textView里面看到 用户体验很好~ 但是要和服务器管理员协商好,做好解析转码工作,不然网页上是不显示的. ios表情编码 在ios中可以使用可爱 ...
- HTTP1.1中CHUNKED编码解析(转载)
HTTP1.1中CHUNKED编码解析 一般HTTP通信时,会使用Content-Length头信息性来通知用户代理(通常意义上是浏览器)服务器发送的文档内容长度,该头信息定义于HTTP1.0协议RF ...
随机推荐
- postgresql plpythonu例子
以下代码仅作为参考之用 select md5, crc32, record->'UserModerAnalysis'->'base_info'->'file_malware' as ...
- [Java A] – is not an enclosing class
public class A {public class B { }}; 需要实例B类时,按照正逻辑是,A.B ab = new A.B();那么编译器就会出现一个错误–“is not an encl ...
- 最大熵的Java实现
这是一个最大熵的简明Java实现,提供训练与预测接口.训练采用GIS训练算法,附带示例训练集.本文旨在介绍最大熵的原理.分类和实现,不涉及公式推导或其他训练算法,请放心食用. 最大熵理论 简介 最大熵 ...
- Python 结巴分词(1)分词
利用结巴分词来进行词频的统计,并输出到文件中. 结巴分词github地址:结巴分词 结巴分词的特点: 支持三种分词模式: 精确模式,试图将句子最精确地切开,适合文本分析: 全模式,把句子中所有的可以成 ...
- java 子接口中定义与父接口相同的方法
今天碰到一个很有意思的问题,在java中如果子接口中定义了与父接口中已经有的方法会发生什么事情呢?比如: interface IRunnable extends Runnable{ void run( ...
- Apache2 添加登陆用户名和密码
1. 修改httpd.conf, 对要做认证的目录进行设置<Directory "/usr/local/var/www"> Options Indexes Foll ...
- NoSQL分类及ehcache memcache redis 三大缓存的对比
NoSQL分类 由于NoSQL中没有像传统数据库那样定义数据的组织方式为关系型的,所以只要内部的数据组织采用了非关系型的方式,就可以称之为NoSQL数据库.目前,可以将众多的NoSQL数据库按照内部的 ...
- python 多线程抓取动态数据
利用多线程动态抓取数据,网上也有不少教程,但发现过于繁杂,就不能精简再精简?! 不多解释,直接上代码,基本上还是很好懂的. #!/usr/bin/env python # coding=utf-8 i ...
- RunJS - 在线编辑、展示、分享、交流你的 JavaScript 代码
发现一个很好玩,很强大的网站 RunJS - 在线编辑.展示.分享.交流你的 JavaScript 代码 http://runjs.cn/ 比如: http://runjs.cn/detail/l ...
- 真正的轻量级WebService框架——使用JAX-WS(JWS)发布WebService
WebService历来都很受重视,特别是Java阵营,WebService框架和技术层出不穷.知名的XFile(新的如CXF).Axis1.Axis2等. 而Sun公司也不甘落后,从早期的JAX-R ...