无论是QQ还是微信的移动客户端都少不了定位功能,之前在微信demo中没有添加定位功能,今天就写个定位的小demo来了解一下定位和地图的东西。地图和定位看上去是挺高大上一东西,其实用法比TableView简单多了,下面的Demo是用的iOS中自带的地图和定位,当然了也可以用第三方的来加载地图,比如百度地图啥的,在这就不赘述了。今天的博客主要是介绍MKMapView的使用,MapView的使用和其他组件的用法差不多,MapView用的是委托回调,在使用mapView的Controller中要实现MKMapViewDelegate协议,并注册委托回调,然后实现相应的回调方法即可。
一,构建Demo的组件
为了节省时间这个demo中的MapView是用Storyboard拖出来的,storyboard中的结构如下所示,上面是MKMapView用于显示地图,下面的labei用于显示当前经纬度:

二,引入MKMapView要用的包,截图如下:

三、编写标注模块的类
1.首先解释一下标注模块是什么东西:标注模块就是显示当前地理位置的信息,下面图种绿色框中是标注模块:

2.编写标注类,标注类必须实现MKAnnotation协议,MyAnnotation.h中的代码如下:

3.实现协议MyAnnotation中的方法,titile返回的是标题,subTitle是子标题,代码如下:

四、编写ViewController中的代码
1.ViewController.h中要引入相应的包和实现相应的协议代码如下

2.编写ViewController.m中的代码,实现协议中相应的委托回调方法,.m中的延展和初始化方法如下

3.实现委托回调中的标注视图,代码截图如下:

4.获取地理位置信息,代码如下:
1 //实现协议中的方法获取坐标 2 -(void)mapView:(MKMapView *)mapView didUpdateUserLocation:(MKUserLocation *)userLocation 3 { 4 //获取location 5 CLLocation *location = userLocation.location; 6 7 //通过location获取经纬度 8 CLLocationCoordinate2D coordinate = location.coordinate; 9 10 11 //显示经纬度 12 [self mapPoint:coordinate]; 13 14 15 //标记范围 16 MKCoordinateSpan span; 17 span.latitudeDelta=0.1; 18 span.longitudeDelta=0.1; 19 MKCoordinateRegion region={coordinate ,span}; 20 21 [self.myMapView setRegion:region]; 22 23 24 25 __block __weak ViewController *copy_self = self; 26 27 //解析地理位置 28 CLGeocoder *geocoder = [[CLGeocoder alloc] init]; 29 [geocoder reverseGeocodeLocation:location completionHandler:^(NSArray *placemarks, NSError *error) { 30 if (placemarks.count > 0) { 31 //使用CLPlacemark解析地理位置 32 CLPlacemark *placeMark = placemarks[0]; 33 NSDictionary *addressDictionary = placeMark.addressDictionary; 34 35 36 //添加地图的标注 37 MyAnnotation *annotation = [[MyAnnotation alloc] init]; 38 annotation.subTitle = addressDictionary[@"Name"]; 39 annotation.coordinate = coordinate; 40 41 //添加标注信息 42 [copy_self.myMapView addAnnotation:annotation]; 43 } 44 }]; 45 46 }
View Code
以上是Demo的所有代码,下面是运行的效果图:

总浏览量
6,756次
博客园历史 2,382 腾讯云 2,192 阿里云 2,181 本站新增 1
本站阅读按浏览器在 15 分钟内去重;禁用浏览器存储时按网络地址去重。推荐按浏览器一年内去重。仅使用站内随机标识,不采集浏览器指纹。
分享这篇文章
原创内容,未经授权禁止转载。
欢迎分享原文链接。除另有署名或许可说明外,本站原创文章的著作权由青玉伏案享有;未经书面授权,禁止整篇转载、复制发布、改编传播或建立内容镜像。
版权与使用条款
- 依法属于合理使用、法定许可等情形的,按法律规定执行;引用时应注明作者、作品名称和原文链接,不得歪曲、篡改或隐去署名。
- 经书面授权使用的,请遵守约定的用途、范围与署名要求。注明出处不等同于已经取得整篇转载或其他使用授权。
- 第三方图片、引用内容和书籍封面等权利归相应权利人所有;开源代码与 Demo 按其各自许可证使用,本声明不改变已有许可。
- 本声明参考《中华人民共和国著作权法》第十条、第二十四条、第五十二条等。对侵权使用,权利人保留依法要求停止侵害并追究相应责任的权利。

博主,定位在模拟器中可以演示么?定位需要真机测试吧
@
hello,姐姐
模拟器中可以演示,不过得手动输入经纬度,上面的代码是在iOS7上运行的,在iOS8的系统上定位会有一些改变,需要做一些配置后上面的东西才可以使用。
@
青玉伏案
哦 好的
@
hello,姐姐
反倒是