1. 常用的地图APP中, 主要是体现了地图的:地图展示和定位功能. 本文主要介绍在iOS开发中, 地图的展示功能
2. 地图的展示必须基于: MapKit 框架
3. 定位功能则必须基于: CoreLocation 框架
<b>说明:</b>
1.在iOS5之后, 不需要再手动导入<MapKit/MapKit.h>框架, 只需要在文件总导入<MapKit/MapKit.h>头文件即可.
2.MapKit框架中所有的数据类型的前缀都是 MK~
3.MapKit有一个很重要的<b>UI控件: MKMapView</b>, 专门用于地图的显示功能.
1. 简单地图显示实例
#import "ViewController.h"
//引入地图头文件
#import <MapKit/MapKit.h>
@interface ViewController ()<MKMapViewDelegate>
//声明一个地图视图属性
@property (strong, nonatomic) MKMapView *mapView;
@end
@implementation ViewController
- (void)viewDidLoad {
[super viewDidLoad];
//1. 初始化地图视图
self.mapView = [[MKMapView alloc] initWithFrame:self.view.bounds];
//2. 触摸缩放属性
self.mapView.zoomEnabled = YES;
//3. 是否可移动
self.mapView.scrollEnabled = YES;
//4. 地图样式(卫星图, 2D平面图等)
self.mapView.mapType = MKMapTypeStandard;
//5. 设置代理
self.mapView.delegate = self;
//6. 显示用户位置
self.mapView.showsUserLocation = YES;
//7. 添加到视图上
[self.view addSubview:self.mapView];
}
@end```
###2. 属性说明:
```code
#1. mapType
MKMapTypeStandard = 0 普通地图
MKMapTypeSatellite 卫星云图
MKMapTypeHybrid 普通地图覆盖于卫星云图之上
MKMapTypeSatelliteFlyover 三维模型
MKMapTypeHybridFlyover 显示道路
#2. delegate
MKMapView可以设置一个代理对象, 用来监听地图对象的相关行为, 常见的代理方法有:
//1. 该方法用来不断监测用户的当前位置, 一个位置更改时默认只会调用一次该方法, 把用户的新位置(userLocation参数)传进来.
- (void)mapView:(MKMapView *)mapView didUpdateUserLocation:(MKUserLocation *)userLocation;
//2. 该方法会在显示区域即将发生变化时调用
- (void)mapView:(MKMapView *)mapView regionWillChangeAnimated:(BOOL)animated;
//3. 该方法会在显示区域已经发生变化时调用
- (void)mapView:(MKMapView *)mapView regionDidChangeAnimated:(BOOL)animated;