目录
SDK组成
百度iOS导航SDK由五部分组成:baiduNaviSDK.bundle资源包,baiduNaviSDK.xcassets ,libbaiduNaviSDK.a静态库,resource目录和头文件。baiduNaviSDK.bundle资源包由导航所需的配置数据、基础数据;baiduNaviSDK.xcassets提供导航功能所需的图片资源。libbaiduNaviSDK.a静态库,提供导航功能、线径规划等功能。resource是导航sdk中底图绘制用到的资源。头文件是libbaiduNaviSDK.a静态库提供给第三方开发者的接口。
新建或打开工程
新建或打开一个iOS工程。新建时请选择支持”iPhone”。
将SDK和Framework添加进工程
把baiduNaviSDK文件夹添加到工程中,把AdSupport.framework、MobileCoreServices.framework、AssetsLibrary.framework、libiconv.tbd、UserNotifications.framework、AudioToolbox.framework、AVFoundation.framework 、libc++.tbd、CoreBluetooth.framework、CoreMotion.framework、CoreLocation.framework、ImageIO.framework、libsqlite3.0.tbd这几个framework添加到工程中,添加方法为在Xcode中单击工程文件,选择Build Phrases选项,点击Link Binary with Libraries下的“+”逐个添加。如下所示:
将资源添加进工程
把resource目录及baiduNaviSDK.bundle、baiduNaviSDK.xcassets添加到工程里。如下所示:
修改Build Settings设置项
在Build Settings中, “Other Linker Flags”添加“-ObjC” 标识
配置.plist文件
设置 “Required background modes”、 “App Transport Security Settings”(可以根据自身情况设置,导航sdk已经全面支持https)、 ”NSLocationAlwaysUsageDescription”、 ”NSLocationWhenInUseUsageDescription”、 ”View controller-based status bar appearance”、” LSApplicationQueriesSchemes”这6项,如下图:
也可复制下面源码:
<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开放平台申请。
发起导航
发起导航前首先需要进行路径规划,如下:
//发起导航 - (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]; }
下图为发起导航后的界面图: