iOS MapKit基本用法

使用地图控件
新建项目,在StoryBoard中拖入一个MapKit View

直接运行,会报错

‘NSInvalidUnarchiveOperationException’, reason: ‘Could not instantiate class named MKMapView’
原因:没有导入MapKit框架
点击项目->General->Targets->Linked Framework and Libraries
加入 MapKit.framework框架,运行成功

MapKit默认使用高德地图
15

显示用户的位置
显示用户的信息,需要设置追踪模式
三种追踪模式:

typedef NS_ENUM(NSInteger, MKUserTrackingMode) {
MKUserTrackingModeNone = 0, // 不追踪
MKUserTrackingModeFollow, // 追踪
MKUserTrackingModeFollowWithHeading, // 追踪位置和方向
} NS_ENUM_AVAILABLE(NA, 5_0);
viewController.m

#import “ViewController.h”
#import

@interface ViewController ()

// 地图
@property (weak, nonatomic) IBOutlet MKMapView *mapKit;

// 这个属性主要用来请求权限
@property (strong, nonatomic) CLLocationManager *mgr;

@end

@implementation ViewController

– (void)viewDidLoad {
[super viewDidLoad];

// 设置追踪模式
self.mapKit.userTrackingMode = MKUserTrackingModeFollow;

// 请求权限
// 这个方法是ios8推出的,ios7没有这个方法,在ios7上执行这个方法会出错!
// 通过检查是否存在这个方法就可以判断是ios7还是ios8
if ([self.mgr respondsToSelector:@selector(requestAlwaysAuthorization)]) {
[self.mgr requestAlwaysAuthorization];
}
}

#pragma mark – 懒加载
– (CLLocationManager *)mgr {
if (_mgr == nil) {
_mgr = [[CLLocationManager alloc] init];
}
return _mgr;
}
@end
运行,会出现以下提示:

Trying to start MapKit location updates without prompting for location authorization. Must call [CLLocationManager requestWhenInUseAuthorization] or [CLLocationManager requestAlwaysAuthorization] first.
原因:ios8访问用户的位置信息,需要用户的授权。
在info.plist中,添加一个字段NSLocationAlwaysUsageDescription,它的值就是请求授权时候的描述信息,可以设置也可以为空。
当程序请求用户授权时,会显示的相应的描述信息。
3

点击允许,就开始定位了!
2

显示位置信息
设置代理,实现代理方法

– (void)mapView:(MKMapView *)mapView didUpdateUserLocation:(MKUserLocation *)userLocation {
CLGeocoder *geocoder = [[CLGeocoder alloc] init];

// 反地理编码;根据经纬度查找地名
[geocoder reverseGeocodeLocation:userLocation.location completionHandler:^(NSArray *placemarks, NSError *error) {
if (placemarks.count == 0 || error) {
NSLog(@”找不到该位置”);
return;
}

// 当前地标
CLPlacemark *pm = [placemarks firstObject];

// 区域名称
userLocation.title = pm.locality;
// 详细名称
userLocation.subtitle = pm.name;
}];
}
455082-a25ce20429a2268c

文/啊了个林(简书作者)
原文链接:http://www.jianshu.com/p/7e7a1107fa0c
著作权归作者所有,转载请联系作者获得授权,并标注“简书作者”。

评论

还没有任何评论,你来说两句吧

发表评论

浙ICP备16008686 -
善始者实繁,克终者盖寡