地图:导入 #import
1、介绍
(1)导入框架 MapKit->MKMapView所有与地图相关的都是以“MK”开头
(2)使用地图功能也需要使用定位服务(也需要开启定位服务、向用户申请授权)->需要一个CLLocation的对象向用户请求授权
(3)功能
《1》展示地图
《2》展示用户所在的位置
《3》添加标记(大头针、展示大头针上的内容)
(4)IOS9.0之后改变(面试题)
《1》可以显示交通情况
《2》可以显示地图比例
《3》可以显示罗盘
2、使用
(1)使用到的类
《1》MKMapView:创建地图对象的类
《2》MKUserLocation:显示用户大头针资料(大头针的数据模型 大头针上显示的内容是根据数据模型来决定的)
《3》MKAnnotation:大头针数据资料 所有大头针模型的一个父类 不能直接使用 都是使用系统提供的子类、或者自定义大头针模型
《4》MKPointAnnotation:大头针模型
《5》MKAnnotationView:所有大头针控件的父类 可以直接使用
《6》MKPinAnnotationView:大头针视图控件
《7》MKCoordinateSpan:经纬度的跨度(比例,跨度越小显示的范围越小越精准)
《8》MKCoordinateRegion:经纬度的范围
设置用户所在位置的一个范围
@property (nonatomic) MKCoordinateRegion region;
- (void)setRegion:(MKCoordinateRegion)region animated:(BOOL)animated;
设置用户在地图上为中心点、以用户的位置为地图的中心点
- (void)setCenterCoordinate:(CLLocationCoordinate2D)coordinate animated:(BOOL)animated
设置地图样式 mapType :
MKMapTypeStandard,标准
MKMapTypeSatellite,卫星地图
MKMapTypeHybrid,鸟瞰 混合
ios9之后新增加的:
MKMapTypeSatelliteFlyover,卫星地图的立体样式
MKMapTypeHybridFlyover,鸟瞰地图的立体样式
显示用户位置 showsUserLocation
*使用地图显示用户位置的时候无法定位用户位置
1、showsUserLocation未设置成YES
2、未创建定位对象,向用户请求授权
3、使用定位服务目的的描述与发送的请求不匹配或者未在iofo.plist中添加定位服务目的的描述
4、用户未在设置里面开启定位服务
设置跟踪用户的样式 userTrackingMode
MKUserTrackingModeNone 不跟踪
MKUserTrackingModeFollow 跟踪
MKUserTrackingModeFollowWithHeading 跟踪并且伴随航向
BOOL类型的属性:
pitchEnabled 设置是否可以捏合
rotateEnabled 设置是否可以旋转
scrollEnabled 设置是否可以滚动
zoomEnabled 设置是否可以缩放
显示建筑物 showsBuildings 在标准效果下才有效
显示热门点 showsPointsOfInterest 在标准和鸟瞰效果下有效
显示标尺(比例)showsScale
显示交通状态 showsTraffic
显示罗盘 showsCompass
地图重要的代理方法:
//更新用户位置时调用
- (void)mapView:(MKMapView *)mapView didUpdateUserLocation:(MKUserLocation *)userLocation
//地图范围将要发生改变时调用
- (void)mapView:(MKMapView *)mapView regionWillChangeAnimated:(BOOL)animated;
//地图范围已经改变完成调用
- (void)mapView:(MKMapView *)mapView regionDidChangeAnimated:(BOOL)animated
//点击大头针触发
- (void)mapView:(MKMapView *)mapView didSelectAnnotationView:(MKAnnotationView*)view{
}
网友评论