二十四桥明月夜

一个没有名字的网工

地图显示MapKit框架的使用

在iOS开发中,我们使用Map Kit API开发地图应用.其核心是MKMapView类。MKMapView是显示地图的视图,它的委托协议是MKMapViewDelegate。使用Map Kit API时,需要导入MapKit框架。

首先我们需要导入主头文件
       #import <MapKit/MapKit.h>
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 #import <MapKit/MapKit.h>
 4 //定位
 5 #import <CoreLocation/CoreLocation.h>
 6 @interface ViewController ()<MKMapViewDelegate> //代理方法
 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了.

 

posted @ 2018-03-26 11:08  24桥明月夜  阅读(247)  评论(0编辑  收藏  举报