免费开源的iOS开发学习平台

Mapkit框架:1-MKMapView简介

CoreLocation框架能够获取经纬度信息,但是实际的App中,使用更加普遍的是地理位置与地图的结合应用,例如我们常见的打车软件,可以在地图上实时显示用户当前的位置,而地理位置与地图的综合应用需要使用到MapKit框架。

MKMapView简介

在MapKit框架中,最重要的一个类就是MKMapView类。MKMapView类可以为用户提供一个展示地图的界面,程序员可以在地图上进行进一步的功能定制。在MKMapView类中,有如下一些比较常用的属性和方法。

  • 设置地图的展示类型。在MKMapView中提供了三种地图展示的方式,分别为MKMapTypeStandard(标准图)、MKMapTypeSatellite(卫星图)、MKMapTypeHybrid(混合图),我们最常用的是MKMapTypeStandard(标准图)。
@property (nonatomic) MKMapType mapType;
  • 当前地图的中心坐标。通常情况下,我们可以获取用户的当前位置,并且赋值给centerCoordinate属性。
@property (nonatomic) CLLocationCoordinate2D centerCoordinate;
  • 设置显示区域的范围。
@property (nonatomic) MKCoordinateRegion region;
  • 设置MKMapView的代理对象,MKMapView的代理对象需要遵守MKMapViewDelegate协议。
@property (nonatomic, weak, nullable) id <MKMapViewDelegate> delegate;
  • 设置地图是否可缩放,默认可缩放。
@property (nonatomic, getter=isZoomEnabled) BOOL zoomEnabled;
  • 用户追踪模式。
@property (nonatomic) MKUserTrackingMode userTrackingMode;
  • 获取的用户的位置坐标。MKUserLocation类中提供了一个CLLocation类型的属性location,可以用户获取用户的位置信息。
@property (nonatomic, readonly) MKUserLocation *userLocation;
  • 是否显示交通情况。
@property (nonatomic) BOOL showsTraffic;
  • 是否显示比例尺。
@property (nonatomic) BOOL showsScale;
  • 是否显示指南针。
@property (nonatomic) BOOL showsCompass;

MKMapViewDelegate代理协议

MKMapView中定义了MKMapViewDelegate代理协议,在该代理协议中提供了用于监测MKMapView加载过程的方法。

  • 地图即将开始加载时调用。
- (void) mapViewWillStartLoadingMap:(MKMapView *)mapView;
  • 地图加载完毕后调用。
-(void)mapViewDidFinishLoadingMap:(MKMapView *)mapView;
  • 地图加载失败调用。
- (void)mapViewDidFailLoadingMap:(MKMapView *)mapView withError:(NSError *)error;
  • 用户位置更新时调用,该方法调用非常频繁,可以不断监测用户的当前位置,通过其提供的userLocation参数,我们可以获取到用户的最新位置信息。
- (void)mapView:(MKMapView *)mapView didUpdateUserLocation:(MKUserLocation *)userLocation;
  • 地图的显示的区域即将发生改变的时候调用。
- (void)mapView:(MKMapView *)mapView regionWillChangeAnimated:(BOOL)animated;
  • 地图的显示区域已经发生改变的时候调用。
- (void)mapView:(MKMapView *)mapView regionDidChangeAnimated:(BOOL)animated;
  • 自定义“大头针”样式。
- (nullable MKAnnotationView *)mapView:(MKMapView *)mapView viewForAnnotation:(id <MKAnnotation>)annotation;