iOS 根据字符串来定位地址
- (void)viewDidLoad
{
[super viewDidLoad];
self.geocoder = [[CLGeocoder alloc]init];
// 设置地图可缩放
self.mapView.zoomEnabled = YES;
// 设置地图可滚动
self.mapView.scrollEnabled = YES;
// 设置地图不可旋转
self.mapView.rotateEnabled = NO;
// 设置显示用户当前位置
self.mapView.showsUserLocation = YES;
// 设置地图的类型
self.mapView.mapType = MKMapTypeStandard;
// 为了方便测试,直接设置搜索框的文本内容
self.searchBar.text =@"北京动物园";
self.searchBar.delegate = self;
}
// 当用户单击虚拟键盘上的“搜索”按钮时激发该方法
- (void)searchBarSearchButtonClicked:(UISearchBar *)searchBar
{
// 调用searchBar方法进行搜索
[self doSearch:searchBar];
}
// 当用户单击“取消”按钮时激发该方法
// 由于我们重定义了该控件的外观——将取消按钮的文本改成了“搜索”,因此单击取消按钮也执行搜索
- (void)searchBarCancelButtonClicked:(UISearchBar *)searchBar
{
// 调用searchBar方法进行搜索
[self doSearch:searchBar];
}
// 执行搜索的方法
- (void)doSearch:(UISearchBar *)searchBar
{
// 关闭searchBar关联的虚拟键盘
[self.searchBar resignFirstResponder];
NSString* searchText = self.searchBar.text;
if(searchText != nil && searchText.length > 0)
{
[self locateAt:searchText];
}
}
// 当用户在搜索框内输入文本时激发该方法
- (void)searchBarTextDidBeginEditing:(UISearchBar *)searchBar
{
// 显示取消按钮
searchBar.showsCancelButton = YES;
// 通过遍历找到该搜索框内的取消按钮,并将取消按钮的文本设为“搜索”
for (id cc in [searchBar.subviews[0] subviews])
{
if ([cc isKindOfClass:[UIButton class]])
{
UIButton *button = (UIButton *)cc;
[button setTitle:@"搜索" forState:UIControlStateNormal];
}
}
}
// 将字符串地址转换为经度、纬度信息,并执行定位
-(void)locateAt:(NSString*)address
{
[self.geocoder geocodeAddressString:address completionHandler:
^(NSArray *placemarks, NSError *error)
{
if ([placemarks count] > 0 && error == nil)
{
NSLog(@"搜索到匹配%lu条地址数据.", (unsigned long)placemarks.count);
// 处理第一个地址
CLPlacemark * placemark = [placemarks objectAtIndex:0];
NSLog(@"经度 = :%f", placemark.location.coordinate.longitude);
NSLog(@"纬度 = :%f", placemark.location.coordinate.latitude);
NSLog(@"国家 = %@", placemark.country);
NSLog(@"邮编 = %@", placemark.postalCode);
NSLog(@"位置 = %@", placemark.locality);
// 设置地图显示的范围
MKCoordinateSpan span;
// 地图显示范围越小,细节越清楚
span.latitudeDelta = 0.01;
span.longitudeDelta = 0.01;
MKCoordinateRegion region = {placemark.location.coordinate,span};
// 设置地图中心位置为搜索到的位置
[self.mapView setRegion:region]; // ①
// 创建一个MKPointAnnotation,该对象将作为地图锚点
MKPointAnnotation *point = [[MKPointAnnotation alloc]init];
// 设置地图锚点的坐标
point.coordinate = placemark.location.coordinate;
// 设置地图锚点的标题
point.title = placemark.name;
// 设置地图锚点的副标题
point.subtitle = [NSString stringWithFormat:@"%@-%@-%@-%@",
placemark.country , placemark.administrativeArea,
placemark.locality , placemark.subLocality];
// 将地图锚点添加到地图上
[self.mapView addAnnotation:point];
// 选中指定锚点
[self.mapView selectAnnotation:point animated:YES];
}
else
{
NSLog(@"没有搜索到匹配数据");
}
}];
}
iOS 根据字符串来定位地址的更多相关文章
- IOS NS 字符串 数组 字典 文件 动态 静态 操作
ios 常用字符串的操作 //将NSData转化为NSString NSString* str = [[NSString alloc] initWithData:response e ...
- iOS 获取字符串中的单个字符
要取到单个字符,就要知道字符串的编码方式,这样才能够定位每个字符在内存中的位置.但是,iOS的字符串编码是不固定的,因此,需要设置一个统一的编码格式,将所有其他格式的字符串都转化为统一的格式,然后就可 ...
- 【iOS】7.4 定位服务->2.1.3.1 定位 - 官方框架CoreLocation 功能1:地理定位
本文并非最终版本,如果想要关注更新或更正的内容请关注文集,联系方式详见文末,如有疏忽和遗漏,欢迎指正. 本文相关目录: ================== 所属文集:[iOS]07 设备工具 === ...
- QT通过IP地址定位地址(用get方法取数据)
通过IP地址定位地址,是要通过查询数据库,如果自己做一个这样的数据库工作量就比较大,所以在网上找了一个查询IP地址的网址,通过调用这个网址查询来实现,但是这个有一定的弊端,如果没有网络或者这个网址不可 ...
- iOS依据字符串计算UITextView高度
iOS计算字符串高度,有须要的朋友能够參考下. 方法一:ios7.0之前适用 /** @method 获取指定宽度width,字体大小fontSize,字符串value的高度 @param value ...
- 【iOS】7.4 定位服务->2.1.3.2 定位 - 官方框架CoreLocation 功能2:地理编码和反地理编码
本文并非最终版本,如果想要关注更新或更正的内容请关注文集,联系方式详见文末,如有疏忽和遗漏,欢迎指正. 本文相关目录: ================== 所属文集:[iOS]07 设备工具 === ...
- 【iOS】7.4 定位服务->3.1 地图框架MapKit 功能1:地图展示
> 本文并非最终版本,如果想要关注更新或更正的内容请关注文集,联系方式详见文末,如有疏忽和遗漏,欢迎指正. --- > 本文相关目录: ================== 所属文集:[[ ...
- IOS免越狱虚拟定位修改工具共享 Jocation
Jocation IOS虚拟定位修改器 具体使用方法可以按照 location cleaned软件相同的操作. 主要是因为本人有一部 IphoneX 和Iphone Xs Max 网上的locatio ...
- iOS开发--地图与定位
概览 现在很多社交.电商.团购应用都引入了地图和定位功能,似乎地图功能不再是地图应用 和导航应用所特有的.的确,有了地图和定位功能确实让我们的生活更加丰富多彩,极大的改变了我们的生活方式.例如你到了一 ...
随机推荐
- 黄聪:C# 开发Chrome内核浏览器(WebKit.net)
WebKit.net是对WebKit的.Net封装,使用它.net程序可以非常方便的集成和使用webkit作为加载网页的容器.这里介绍一下怎么用它来显示一个网页这样的一个最简单的功能. 第一步: 下载 ...
- HttpUrlConnection java.net.SocketException: Software caused connection abort: recv failed
最近做java swing程序在模拟httprequest请求的时候出现了这个错误 java.net.SocketException: Software caused connection abort ...
- AP_AP系列 - 付款管理分析(案例)
2014-07-08 Created By BaoXinjian 一.摘要 1. 付款 2. 发票付款概述 3. 使用发票工作台付款 4. 使用付款管理器付款 5. 银行账户模型 二.流程分析 1. ...
- 触发隐藏链接进行文件下载,click无响应
function invokeClick(element) { if (element.click) element.click(); //判断是否支持click() 事件 else if (elem ...
- RVMDK的DEBUG调试-实时数据查看
无论在Simulation还是硬件仿真的情况下,View-period windows update后watch窗口添加的变量即可实时更新, 软仿真和硬件仿真的区别就是实际时间的差异:如RTC查看秒的 ...
- Guava 9-I/O
字节流和字符流 Guava使用术语”流” 来表示可关闭的,并且在底层资源中有位置状态的I/O数据流.术语”字节流”指的是InputStream或OutputStream,”字符流”指的是Reader ...
- json字符串转json对象的方法
在使用$.ajax()方法时,我们可以设置dataType:'json'的参数,便可以拿到后台返回的json数据对应的json对象.但有时,我们拿到的是json字符串,需要将它再转成json对象来使用 ...
- gc 辅助打印信息
cat xx.xml|grep GC <jvm-arg>-XX:+PrintGCDetails</jvm-arg> <jvm-arg>-XX:+PrintGCDat ...
- 解决Web部署 svg/woff/woff2字体 404错误(转)
http://blog.sina.com.cn/s/blog_4997f1b90102vkjn.html 最近项目中用到了fontawesome-webfont.svg等字体.部署项目后,发现没有&l ...
- weblogic诊断案例-AdminServer平均1-2周崩溃
OS2台:RH5.5 64位 WEBLOGIC VERSION:9.2.3 JDK:1.5 64位 weblogic一个管理服务,4个受管(2台服务器做集群,每台服务器2个受管).应用部署后通过一个月 ...