地图显示MapKit框架的使用
在iOS开发中,我们使用Map Kit API开发地图应用.其核心是MKMapView类。MKMapView是显示地图的视图,它的委托协议是MKMapViewDelegate。使用Map Kit API时,需要导入MapKit框架。
首先我们需要导入主头文件
#import
MapKit框架使用须知:
MapKit框架中所有数据类型的前缀都是MK
MapKit有一个比较重要的UI控件:MKMapView,专门用于地图显示.
一.设置MKMapView的userTrackingMode属性可以跟踪显示用户的当前位置
MKUserTrackingModeNone :不跟踪用户的位置
MKUserTrackingModeFollow :跟踪并在地图上显示用户的当前位置
MKUserTrackingModeFollowWithHeading :跟踪并在地图上显示用户的当前位置,地图会跟随用户的前进方向进行旋转
二.设置MKMapView的mapType设置地图类型(mapViewType是枚举类型)
MKMapTypeStandard // 普通地图(比较常用,一般不需要考虑地形,只需要显示出街道即可)
MKMapTypeSatellite // 卫星云图 (主要用于显示地形)
MKMapTypeHybrid // 普通地图覆盖于卫星云图之上(上述2种的混合)
MKMapTypeSatelliteFlyover NS_ENUM_AVAILABLE(10_11, 9_0) // 地形和建筑物的三维模型
MKMapTypeHybridFlyover NS_ENUM_AVAILABLE(10_11, 9_0) // 显示道路和附加元素的Flyover
三.MKMapView可以设置一个代理对象,用来监听地图的相关行为,常见的代理方法有:
// 一个位置更改默认只会调用一次,不断监测用户的当前位置时每次都会调用这个方法,把用户的最新位置(userLocation参数)传进来.
- (void)mapView:(MKMapView *)mapView didUpdateUserLocation:(MKUserLocation *)userLocation;
现在我们就来试一试,显示地图:
1 #import "ViewController.h" 2 //显示地图 3 #import4 //定位 5 #import 6 @interface ViewController () //代理方法 7 //关键类:地图显示视图 8 @property (nonatomic, strong)MKMapView *mapView; 9 10 //定位管理器 11 @property (nonatomic, strong)CLLocationManager *manager; 12 13 @end 14 15 @implementation ViewController 16 17 //懒加载 18 - (MKMapView *)mapView { 19 if (!_mapView) { 20 //视图设置为屏幕大小 21 _mapView = [[MKMapView alloc] initWithFrame:[UIScreen mainScreen].bounds]; 22 //设置几个重要的属性 23 _mapView.mapType = MKMapTypeStandard; //普通地图 24 //设置代理 25 _mapView.delegate = self; 26 //缩放(默认就是YES,可以缩放的) 27 // _mapView.zoomEnabled = YES; 28 //添加到父视图 29 [self.view addSubview:_mapView]; 30 } 31 return _mapView; 32 } 33 34 35 - (void)viewDidLoad { 36 [super viewDidLoad]; 37 //懒加载 38 [self mapView]; 39 }
运行就可以看到地图了,但是这时候,你会发现你看到的不是中国地图,没错,因为你还没有定位,有可能你看到的地图就是USA的,你可以鼠标拖动屏幕,来移动到你想要看的地方.
接下来我们就来将地图和坐标结合,显示具体位置.这个地方我们就需要用到之前学到的,定位框架CoreLocation了.