高德 开发 iOS 定位SDK 入门指南
更新时间:2017年09月29日
第 1 步:获取最新版本的 Xcode
建议您使用 8.0 版或更高版本的 Xcode开发引用 高德 iOS SDK 的项目。(注:下载地址为Apple官方网站)
第 2 步:获取 CocoaPods
高德 iOS SDK 以 CocoaPods pod 形式提供。 CocoaPods 是一种用于 Swift 和 Objective-C Cocoa 项目的开源依赖项管理器。
如果您尚未安装 CocoaPods 工具,请在 OS X 上从终端运行以下命令进行安装。 如需了解详情,请参阅 CocoaPods 入门指南。
$ sudo gem install cocoapods
第 3 步:使用 CocoaPods 安装 SDK
为 高德 iOS SDK 创建一个 Podfile,并使用它来安装 SDK。
1.在项目目录中(.xcodeproj)打开一个终端,创建一个名为 Podfile 文件。如果您尚未创建 Xcode 项目,请立即创建一个并将其保存到您的本地计算机。 (如果您第一次接触 iOS 开发,请创建一个Single View Application。)
$ touch Podfile
2.编辑 Podfile 文件,并保存。 Podfile文件如下:
target “YourProjectTarget” do
pod 'AMapLocation'
end
注意:pod 'AMapLocation' 命令还会引入基础 SDK ,涉及到提交AppStore成功与否,请点我查看基础 SDK 的介绍。
3.运行 pod install 命令安装SDK。
$ pod install
如果不能安装最新版 SDK 需要执行 pod repo update 命令更新本地 pod 库。
4.关闭 Xcode,然后打开(双击)您项目的 .xcworkspace 文件以启动 Xcode。 从此刻开始,您必须使用 .xcworkspace 文件打开项目。
第 4 步:获取高德Key
请前往高德开放平台控制台申请 iOS Key。
第 5 步:申请权限
权限设置
在项目的 Info.plist 添加定位权限申请,根据您的业务需求,选择下列方式设置。
注意:iOS 11 在权限上有更新,请参考。
其中:
iOS 8 - iOS 10 版本:
NSLocationWhenInUseUsageDescription 表示应用在前台的时候可以搜到更新的位置信息。
NSLocationAlwaysUsageDescription 申请Always权限,以便应用在前台和后台(suspend 或 terminated)都可以获取到更新的位置数据。
iOS 11 版本:
NSLocationAlwaysAndWhenInUseUsageDescription 申请Always权限,以便应用在前台和后台(suspend 或 terminated)都可以获取到更新的位置数据(NSLocationWhenInUseUsageDescription 也必须有)。
注意:如果需要同时支持在iOS8-iOS10和iOS11系统上后台定位,建议在plist文件中同时添加NSLocationWhenInUseUsageDescription、NSLocationAlwaysUsageDescription和NSLocationAlwaysAndWhenInUseUsageDescription权限申请。
ATS设置

第 6 步:Hello,AMapLocation!
1.配置Info.plist 文件
由于需要申请定位权限,在 Info.plist 中加入 NSLocationAlwaysUsageDescription 字段。
2.配置高德Key至AppDelegate.m文件
将上面步骤获取的高德Key,配置到代码中,以保证定位功能的正常运行。代码如下:
#import <AMapFoundationKit/AMapFoundationKit.h>
//需要引入头文件
……
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
……
[AMapServices sharedServices].apiKey = @"您的Key";
……
}
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
AMapServices.shared().apiKey = APIKey
......
}
3.实现持续定位
代码如下:
#import <AMapLocationKit/AMapLocationKit.h>
//初始化AMapLocationManager对象,设置代理。
- (void)viewDidLoad
{
self.locationManager = [[AMapLocationManager alloc] init];
self.locationManager.delegate = self;
}
//调用AMapLocationManager提供的startUpdatingLocation方法开启持续定位。
[self.locationManager startUpdatingLocation];
//接收位置更新,实现AMapLocationManagerDelegate代理的amapLocationManager:didUpdateLocation方法,处理位置更新
- (void)amapLocationManager:(AMapLocationManager *)manager didUpdateLocation:(CLLocation *)location reGeocode:(AMapLocationReGeocode *)reGeocode
{
NSLog(@"location:{lat:%f; lon:%f; accuracy:%f}", location.coordinate.latitude, location.coordinate.longitude, location.horizontalAccuracy);
if (regeocode)
{
NSLog(@"reGeocode:%@", regeocode);
}
}
//初始化AMapLocationManager对象,设置代理。
override func viewDidLoad() {
locationManager = AMapLocationManager()
locationManager.delegate = self
}
//调用AMapLocationManager提供的startUpdatingLocation方法开启持续定位。
locationManager.startUpdatingLocation()
//接收位置更新,实现AMapLocationManagerDelegate代理的amapLocationManager:didUpdateLocation方法,处理位置更新
func amapLocationManager(_ manager: AMapLocationManager!, didUpdate location: CLLocation!, reGeocode: AMapLocationReGeocode?) {
NSLog("location:{lat:\(location.coordinate.latitude); lon:\(location.coordinate.longitude); accuracy:\(location.horizontalAccuracy);};");
if let reGeocode = reGeocode {
NSLog("reGeocode:%@", reGeocode)
}
}
第 7 步:连接 iOS 设备
了解您的应用实际运行情况的最简单方法是将 iOS 设备与计算机相连。在手机上信任您的开发者证书,并开启定位。
此外,您也可以使用 iOS 模拟器来运行您的应用。 Xcode 中自带了多种模拟器,您可以选择一种模拟器来构建和运行您的应用。
第 8 步:构建和运行您的应用
在 Xcode 中,点击 Product 菜单中 Run 选项(或 Run 按钮图标)运行您的应用。
后续步骤
您可能想观摩一些示例代码,可以前往示例代码下载官方示例Demo。
或者您也可以前往开发指南阅读更多相关内容。