地图是目前所有的应用中最常用的一个功能,而目前国内用的比较多的就是百度地图与高德地图,两者在使用与功能上,有很多的相似之处,最近项目中使用到高德地图,所以,对功能使用进行一个记录!
目录:
1、集成高德地图
2、获取地图使用权限
3、使用地图定位功能
一、集成高德地图
确保已经配置了pod安装环境,进入到项目主目录,编辑Podfile文件,添加如下:
pod 'AMapLocation-NO-IDFA' (注:不包含内嵌广告标识版本)
添加完成后执行以下命令进行库的导入:
pod install
配置Info.plist 文件,iOS9为了增强数据访问安全,将所有的http请求都改为了https,为了能够在iOS9中正 常使用地图SDK,请在"Info.plist"中进行如下配置,否则影响SDK的使用:
NSAppTransportSecurity
NSAppTransportSecurity
配置高德Key至AppDelegate.m文件,如下方法中添加设置:
##代码引用
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
AMapServices.shared().apiKey = @"您的Key";
……
}
完成以上配置操作后,运行项目,没有报错,就可以往下继续走。
二、获取地图使用权限
苹果应用在使用地图时,需要获得用户的允许,才可以使用,权限的获取可以按如下步骤进行
2.1 配置Info.plist 文件,在plist文件中添加权限获取,并且描述地图用在什么地方,如果描述不清晰,可能会在上架的时候被拒:
2.2 通过调用CLLocationManager.authorizationStatus() 方法进行当前权限的读取,判断是否有权限使用地图,如果没有,就做出相应的提示:
let gainLocationAuthority =CLLocationManager()
switch CLLocationManager.authorizationStatus() {
case .notDetermined,.restricted,.denied:
gainLocationAuthority.requestWhenInUseAuthorization()
case .authorizedAlways,.authorizedWhenInUse:
print("已开启权限")
}
}
如果用户已经开启权限,那么,接下来就是使用地图开始定位。
三、使用地图定位功能
3.1 初始化地图界面
var mapView:MAMapView?
func setupMap() {
mapView=MAMapView(frame:view.frame)
mapView?.zoomLevel = 12 //设置地图的缩放级别
mapView?.delegate = self //设置地图回调的代理
mapView?.userTrackingMode = .follow //设置定位用户位置的模式
mapView?.showsCompass = false ///是否显示指南针, 默认YES
mapView?.showsUserLocation = false ///是否显示用户位置, 默认YES
view.addSubview(mapView!)
}
3.2 使用定位管理类。执行startUpdatingLocation()方法,这个方法的回调在AMapLocationManagerDelegate协议里;
let locationManager = AMapLocationManager()
func startLocation(location: @escaping (CLLocation) -> ()) {
locationManager.startUpdatingLocation()
locationBlock= { info in
location(info)
self.stopLocation()
}
}
开启定位后,定位成功与失败都会在AMapLocationManagerDelegate协议的方法中进行回调:
///定位失败回调
func amapLocationManager(_manager:AMapLocationManager!, didFailWithError error:Error!) {
print("")
}
///定位成功回调
func amapLocationManager(_manager:AMapLocationManager!, didUpdate location:CLLocation!) {
/*
*在此处可以设置地图的中心点,以及相关其它设置
*/
locationBlock!(location)
}
///地图权限改变回调
func amapLocationManager(_manager:AMapLocationManager!, didChange status:CLAuthorizationStatus) {
print("")
}
通过以上步骤,已经可以初步使用高德地图进行定位功能展示,当中还有很多参数可以设置,功能需要,可以一一尝试!