说明:
MKMapView是地图控件,能实现显示标准地图,交通线路,卫星地图等,支持在地图上标记图标,导航等操作。
一、显示地图:
1.将MKMapView控件拖动到Main.storyboard视图中,并拖线到ViewController.m创建控件引用,导入MapView相关依赖包,实现代理:
//导入MapView相关依赖包
#import <MapKit/MapKit.h>
//实现地图、定位代理(接口)
@interface ViewController () <MKMapViewDelegate>
//MapView控件
@property (weak, nonatomic) IBOutlet MKMapView *mapView;
@end
//设置代理监听
self.mapView.delegate = self;
2.设置地图类别(默认为标准模式):
//设置地图类别
/*
MKMapTypeStandard 标准模式
MKMapTypeSatellite 卫星模式
MKMapTypeHybrid 混合模式
MKMapTypeSatelliteFlyover 卫星+交通模式
MKMapTypeHybridFlyover 混合+交通模式
MKMapTypeMutedStandard
*/
self.mapView.mapType = MKMapTypeStandard;
二、定位:
1.用圆点显示用户位置:
//用圆点显示用户位置
self.mapView.userTrackingMode = MKUserTrackingModeFollow;
2.实时更新定位信息,重写mapView-didUpdateUserLocation方法:
/*
MKMapViewDelegate方法:实时更新定位信息
*/
- (void)mapView:(MKMapView *)mapView didUpdateUserLocation:(MKUserLocation *)userLocation{
//设置地点标题
userLocation.title = @"地点标题";
userLocation.subtitle = @"地点子标题";
//获取当前位置
CLLocationCoordinate2D center = userLocation.location.coordinate;
//将地图视图移到当前位置
[mapView setCenterCoordinate:userLocation.location.coordinate animated:YES];
//设置地图显示范围
MKCoordinateSpan span = MKCoordinateSpanMake(0.021321, 0.019366);
MKCoordinateRegion region = MKCoordinateRegionMake(center, span);
//设置显示范围
[mapView setRegion:region animated:YES];
}
3.将视图移到当前定位位置:
/*
自定义方法:将视图移到当前定位位置
*/
- (void)moveCenter{
//获取当前位置
CLLocationCoordinate2D center = self.mapView.userLocation.location.coordinate;
//将地图视图移到当前位置
[self.mapView setCenterCoordinate:center animated:YES];
}
三、处理地图点击事件:
1.设置MKMapView点击事件:
/*
设置MKMapView点击事件
*/
- (void)setMapViewClickAction{
//设置mapView点击事件
[self.mapView addGestureRecognizer:[[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(onTapClick:)]];
}
/*
自定义方法:接收MKMapView点击事件
*/
- (void)onTapClick:(UITapGestureRecognizer *)recognizer{
}