示例中心
功能在线体验
控制台
您现在的位置: 开发 > iOS 定位SDK > 入门指南 >

高德 开发 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。

或者您也可以前往开发指南阅读更多相关内容。

示例中心 功能
在线体验
常见问题