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

高德 开发 iOS 导航SDK 入门指南

更新时间:2018年07月03日

第 1 步,获取最新版本的 Xcode

使用高德 iOS SDK开发导航项目,2.3.0及以上版本需要 8.0 版或更高版本的 Xcode,2.3.0以下版本需要 7.0 版或更高版本的 Xcode。(注:下载地址为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 文件如下:

platform :ios, "7.0"
target 'yourTargetName' do
pod 'AMapNavi'  #导航SDK
end

3、运行 pod install 命令安装SDK。

$ pod install

注意:若不能获取最新版的SDK,需要执行 $ pod repo update 命令更新本地 pod库。

4、关闭 Xcode,然后打开(双击)您项目的 .xcworkspace 文件以启动 Xcode。 从此刻开始,您必须使用 .xcworkspace 文件打开项目。

第 4 步,获取高德Key

请前往高德开放平台控制台申请 iOS Key。

第 5 步:Hello,AMapNavi!

1、配置 Info.plist 文件。

由于导航需要定位,需申请定位权限,在 Info.plist 中加入 NSLocationAlwaysUsageDescription 字段。

2、在 AppDelegate.m 文件的 didFinishLaunchingWithOptions 方法中配置高德 Key。

将上面步骤获取的高德Key,配置到代码中,以保证导航功能的正常运行。步骤如下:

1) 引入头文件。

#import <AMapFoundationKit/AMapFoundationKit.h>

2) 配置 高德Key。

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    ……
    
    [AMapServices sharedServices].apiKey = "您的Key";
    
    ……
}
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
        
        AMapServices.shared().apiKey = @"您的Key"
        
        ……
    }

3、实现导航。

在 ViewController.m 中完成导航所需对象的初始化工作、导航路径规划、开始导航等工作。实现步骤如下:

1)引入头文件。

#import <AMapNaviKit/AMapNaviKit.h>

提示:若是使用 Swift 进行开发,在桥接的头文件进行引入。

2) 创建 AMapNaviDriveManager。

- (void)initDriveManager
{
     [[AMapNaviDriveManager sharedInstance] setDelegate:self];
}
func initDriveManager() {

    AMapNaviDriveManager.sharedInstance().delegate = self
    
}

3) 创建 AMapNaviDriveView。

- (void)initDriveView
{
    if (self.driveView == nil)
    {
        self.driveView = [[AMapNaviDriveView alloc] initWithFrame:self.view.bounds];
        [self.driveView setDelegate:self];
    }
}
func initDriveView() {
    driveView = AMapNaviDriveView(frame: view.bounds)
    driveView.delegate = self
}

4) 将 AMapNaviDriveView 与 AMapNaviManager 关联起来,并将 AManNaviDriveView 显示出来。

- (void)configDriveNavi
{
    [[AMapNaviDriveManager sharedInstance] addDataRepresentative:self.driveView];
    [self.view addSubview:self.driveView];
}
func configDriveNavi() {
    AMapNaviDriveManager.sharedInstance().addDataRepresentative(driveView)
    view.addSubview(driveView)
}

5) 进行路线规划。

- (void)calculateRoute
{
    [[AMapNaviDriveManager sharedInstance] calculateDriveRouteWithStartPoints:@[self.startPoint]
                                                endPoints:@[self.endPoint]
                                                wayPoints:nil
                                          drivingStrategy:AMapNaviDrivingStrategySingleDefault];
}
func calculateRoute() {
    //进行路径规划
    AMapNaviDriveManager.sharedInstance().calculateDriveRoute(withStart: [startPoint],
                                     end: [endPoint],
                                     wayPoints: nil,
                                     drivingStrategy: .singleDefault)
}

6) 当路线规划成功时,开启导航。

- (void)driveManagerOnCalculateRouteSuccess:(AMapNaviDriveManager *)driveManager
{
    
    [[AMapNaviDriveManager sharedInstance] startEmulatorNavi];
}
func driveManager(onCalculateRouteSuccess driveManager: AMapNaviDriveManager) {
    NSLog("CalculateRouteSuccess")
    
    //算路成功后进行模拟导航
    AMapNaviDriveManager.sharedInstance().startEmulatorNavi()
}

7)当退出ViewController的时候,销毁AMapNaviDriveManager单例

- (void)dealloc
{
    [[AMapNaviDriveManager sharedInstance] stopNavi];
    [[AMapNaviDriveManager sharedInstance] removeDataRepresentative:self.driveView];
    [[AMapNaviDriveManager sharedInstance] setDelegate:nil];
    
    BOOL success = [AMapNaviDriveManager destroyInstance];
    NSLog(@"单例是否销毁成功 : %d",success);
    
    [self.driveView removeFromSuperview];
    self.driveView.delegate = nil;
}
deinit {
        AMapNaviDriveManager.sharedInstance().stopNavi()
        AMapNaviDriveManager.sharedInstance().removeDataRepresentative(driveView)
        AMapNaviDriveManager.sharedInstance().delegate = nil
        
        let success = AMapNaviDriveManager.destroyInstance()
        NSLog("单例是否销毁成功 : \(success)")
        
        driveView.removeFromSuperview()
        driveView.delegate = nil
}


第 6 步,连接 iOS 设备

了解您的应用实际运行情况的最简单方法是将 iOS 设备与计算机相连。在手机上信任您的开发者证书,并开启定位。

此外,您也可以使用 iOS 模拟器来运行您的应用。 Xcode 中自带了多种模拟器,您可以选择一种模拟器来构建和运行您的应用。

第 7 步,构建和运行您的应用

在 Xcode 中,点击 Product 菜单中 Run 选项(或 Run 按钮图标)运行您的应用。

您可以看到在地图上有个蓝色箭头沿着线路导航。如果您未看到地图,请确认是否在添加了您的高德Key;如果您看到了地图,但是没有看到蓝色箭头沿线导航,那请检查您是否联网。

后续步骤

您可能想观摩一些示例代码,可以前往示例中心下载官方示例 Demo。

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

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