1 sb里 MapKitView
拖入后,直接使用
代码里导入,<MapKit/MapKit.h>继续报错
在这里导入,问题解决: Xcode5之后,程序会默认导入框架,在SB中,实例化的时候先走的是SB里的控制器,随后走的是代码里的<MapKit/MapKit.h>使用UIKit之外的框架必须导入
苹果地图的代理商是高德,数据时苹果公司的
地图MKMapView
地图类型MKMapTypeStandard 标准 MKMapTypeStatellite 卫星 MKMapTypeHybrid鸟瞰,混合 self.mapView.mapType = MKMapTypesStandard;
设置实时交通状况 self.mapView.showsTraffic = YES;
显示用户位置self.mapView.userTrackingMode = MKUserTrackingModeFollow;
MKUserTrackingModeFollow 跟踪用户的位置;MKUserTrackingModeFollowWithHeading跟踪用户的位置和方向
地图中,显示用户位置必须请求用户授权 创建持续请求
@property(nonautomic,strong)CLLocationManager locationManager;
[self.locationManager requestWhenInUseAuthorization];
2 设置地图代理 self.mapView.delegate = self;
定位到用户位置的时候调用 didUpdateuserLocaiton:userLocation
userLocation:蓝色光圈 大头针 标题:userLocation.title = @"上海"; 子标题:userLocation.subtitle = @"浦东";
反地理编码拿到地标,通过地标给蓝色光圈赋值
具体实现
3 实现功能,回到当前位置: 在地图上点击查看 其他位置后,实现定位点 居中 并回到当时的大小层级结构
self.mapView.centerCoordinate = self.mapView.userLocation.location.coordinate;
确定区域:中心点经纬度 经纬度跨度
经纬度跨度:MKCoordinateSpan = MKCoordinateSpanMake(2.0,2.0);
self.mapView.region = MKCoordinateRegionMake(self.mapView.userLocation.location.coordinate,span);
//当地图的区域改变时调用
set方法,添加动画效果
4放大和缩小地图
放大地图就是区域中的经纬度跨度* 0.5
缩小地图就是经纬度跨度 * 2
点击后会 返回到 用户当前位置的 中心点
优化: