高德地图使用篇-1 集成与定位

地图是目前所有的应用中最常用的一个功能,而目前国内用的比较多的就是百度地图与高德地图,两者在使用与功能上,有很多的相似之处,最近项目中使用到高德地图,所以,对功能使用进行一个记录!

目录:

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文件中添加权限获取,并且描述地图用在什么地方,如果描述不清晰,可能会在上架的时候被拒:

NSLocationAlwaysAndWhenInUseUsageDescription

您的位置将被用于选择附近门店

NSLocationAlwaysUsageDescription

您的位置将被用于选择附近门店

NSLocationWhenInUseUsageDescription

您的位置将被用于选择附近门店

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("")    

    }

通过以上步骤,已经可以初步使用高德地图进行定位功能展示,当中还有很多参数可以设置,功能需要,可以一一尝试!

你可能感兴趣的:(高德地图使用篇-1 集成与定位)