日常生活中我们经常会用到地图和导航, 这两个功能必须基于2个框架进行开发:
- MapKit :用于地图展示
- CoreLocation :用于地理定位
MapKit
几个重要属性
1.可以通过设置MKMapView的mapViewType设置地图类型
MKMapTypeStandard :普通地图(左图)
MKMapTypeSatellite :卫星云图 (中图)
MKMapTypeHybrid :普通地图覆盖于卫星云图之上
2.设置MKMapView的userTrackingMode属性可以跟踪显示用户的当前位置
MKUserTrackingModeNone :不跟踪用户的位置
MKUserTrackingModeFollow :跟踪并在地图上显示用户的当前位置
MKUserTrackingModeFollowWithHeading :跟踪并在地图上显示用户的当前位置,地图会跟随用户的前进方向进行旋转
MKMapView的代理
跟踪到用户位置通过代理告知, 常见代理方法:
// 一个位置更改默认只会调用一次,不断监测用户的当前位置
// 每次调用,都会把用户的最新位置(userLocation参数)传进来
- (void)mapView:(MKMapView *)mapView didUpdateUserLocation:(MKUserLocation *)userLocation;
// 地图的显示区域即将发生改变的时候调用
- (void)mapView:(MKMapView *)mapView regionWillChangeAnimated:(BOOL)animated;
// 地图的显示区域已经发生改变的时候调用
- (void)mapView:(MKMapView *)mapView regionDidChangeAnimated:(BOOL)animated;
MKUserLocation
MKUserLocation其实是个大头针模型,包括以下属性:
// 显示在大头针上的标题
@property (nonatomic, copy) NSString *title;
// 显示在大头针上的子标题
@property (nonatomic, copy) NSString *subtitle;
// 地理位置信息(大头针钉在什么地方?)
@property (readonly, nonatomic) CLLocation *location;