浏览器版本低!无法浏览完整内容,建议升级或更换浏览器。

iOS 导航SDK

百度iOS 导航SDK为AiOS移动端应用提供了一套简单易用的导航服务接口,适用于iOS 2.1及以上版本。专注于为广大开发者提供最好的导航服务,通过使用百度导航SDK,开发者可以轻松为应用程序实现专业、高效、精准的导航功能。

SDK组成

百度iOS导航SDK由五部分组成:baiduNaviSDK.bundle资源包,baiduNaviSDK.xcassets ,libbaiduNaviSDK.a静态库,resource目录和头文件。baiduNaviSDK.bundle资源包由导航所需的配置数据、基础数据;baiduNaviSDK.xcassets提供导航功能所需的图片资源。libbaiduNaviSDK.a静态库,提供导航功能、线径规划等功能。resource是导航sdk中底图绘制用到的资源。头文件是libbaiduNaviSDK.a静态库提供给第三方开发者的接口。

新建或打开工程

新建或打开一个iOS工程。新建时请选择支持”iPhone”。

helloworld2.png


将SDK和Framework添加进工程

把baiduNaviSDK文件夹添加到工程中,把AdSupport.framework、MobileCoreServices.framework、AssetsLibrary.framework、libiconv.tbd、UserNotifications.framework、AudioToolbox.framework、AVFoundation.framework 、libstdc++6.0.9.dylib、CoreBluetooth.framework、CoreMotion.framework、CoreLocation.framework、ImageIO.framework、libsqlite3.0.tbd这几个framework添加到工程中,添加方法为在Xcode中单击工程文件,选择Build Phrases选项,点击Link Binary with Libraries下的“+”逐个添加。如下所示:

hello.png


将资源添加进工程

把把resource目录及baiduNaviSDK.bundle、baiduNaviSDK.xcassets添加到工程里。如下所示:

hello_2.png

修改Build Settings设置项

在Build Settings中, “Other Linker Flags”添加“-ObjC” 标识

hello3.png

配置.plist文件

设置 “Required background modes”、 “App Transport Security Settings”(可以根据自身情况设置,导航sdk已经全面支持https)、 ”NSLocationAlwaysUsageDescription”、 ”NSLocationWhenInUseUsageDescription”、 ”View controller-based status bar appearance”、” LSApplicationQueriesSchemes”这6项,如下图:

Hello%20World-5.png

也可复制下面源码:

<key>NSLocationAlwaysUsageDescription</key> <string>只有开启定位功能才能正常使用百度导航</string> <key>NSLocationWhenInUseUsageDescription</key> <string>只有开启定位功能才能正常使用百度导航</string> <key>UIBackgroundModes</key> <array> <string>audio</string> <string>location</string> </array> <key>UIViewControllerBasedStatusBarAppearance</key> <false/> <key>LSApplicationQueriesSchemes</key> <array> <string>baidumap</string> </array>

开启引擎

在AppDelegate.m添加如下头文件

#import "BNCoreServices.h"  

在函数 “application:didFinishLaunchingWithOptions:” 中启动SDK引擎,如下图所示。其中 KEY值可以在LBS开放平台申请。

hello4.jpeg

发起导航

发起导航前首先需要进行路径规划,如下:

//发起导航
- (void)startNavi
{
    //节点数组
    NSMutableArray *nodesArray = [[NSMutableArray alloc]    initWithCapacity:2];

    //起点
    BNRoutePlanNode *startNode = [[BNRoutePlanNode alloc] init];
    startNode.pos = [[BNPosition alloc] init];
    startNode.pos.x = 113.936392;
    startNode.pos.y = 22.547058;
startNode.pos.eType = BNCoordinate_BaiduMapSDK;
    [nodesArray addObject:startNode];
    
    //终点
    BNRoutePlanNode *endNode = [[BNRoutePlanNode alloc] init];
    endNode.pos = [[BNPosition alloc] init];
    endNode.pos.x = 114.077075;
    endNode.pos.y = 22.543634;
endNode.pos.eType = BNCoordinate_BaiduMapSDK;
    [nodesArray addObject:endNode];
    //发起路径规划
    [BNCoreServices_RoutePlan startNaviRoutePlan:BNRoutePlanMode_Recommend naviNodes:nodesArray time:nil delegete:self userInfo:nil];
}

算路成功后,在回调函数中发起导航,如下:

//算路成功回调
-(void)routePlanDidFinished:(NSDictionary *)userInfo
{
    NSLog(@"算路成功");
    
    //路径规划成功,开始导航
    [BNCoreServices_UI showPage:BNaviUI_NormalNavi delegate:self extParams:nil];
}

下图为发起导航后的界面图:

hello5.png