ios项目内嵌入百度地图导航实现

ios百度地图基础导航实现-比官网更加详细通俗易懂

  • ios百度地图基础导航实现-比官网更加详细通俗易懂
    • 准备工作到百度地图API官网申请AK以及下载SDK
    • 第一步将下载的SDK中的文件拷贝到新建工程之下
    • 第二步将SDK和Framework添加进工程
    • 第三步修改Build Settings设置项
    • 第四步配置plist文件
    • 第五步进入正题-发起导航
    • 尾声以上仔细跟随下来就能实现啦贴一张效果图

准备工作:到百度地图API官网申请AK以及下载SDK

到百度地图API官网注册一个开发者,然后到这个链接申请AK码http://lbsyun.baidu.com/apiconsole/key
然后到这个链接下载百度导航的SDKhttp://lbsyun.baidu.com/index.php?title=ios-navsdk/sdkios-nav-download

第一步:将下载的SDK中的文件拷贝到新建工程之下

下载下来的SDK资源包如下,将图中的框起来的文件add file到项目下或者直接拖入工程之中
ios项目内嵌入百度地图导航实现_第1张图片

第二步:将SDK和Framework添加进工程

把baiduNaviSDK文件夹添加到工程中,把UserNotifications.framework、AudioToolbox.framework、ImageIO.framework、CoreMotion.framework、CoreLocation.framework、CoreTelephony.framework、MediaPlayer.framework、AVFoundation.framework、SystemConfiguration.framework、JavaScriptCore.framework、Security.framework 、OpenGLES.framework 、GLKit.framework 、libstdc++6.0.9.dylib、libc++.tbd、libsqlite3.0.tbd、libz.1.2.5.tbd这几个framework添加到工程中,添加方法为在Xcode中单击工程文件,选择Build Phrases选项,点击Link Binary with Libraries下的“+”逐个添加。另外thirdlibs中的两个静态库libssl.a、libcrypto.a也要添加到工程中,如下所示:(注意哟要仔细对照别漏了
ios项目内嵌入百度地图导航实现_第2张图片

第三步:修改Build Settings设置项

在Build Settings中, “Other Linker Flags”添加“-ObjC” 标识
ios项目内嵌入百度地图导航实现_第3张图片

第四步:配置.plist文件

设置 “Required background modes”、 “App Transport Security Settings”(可以根据自身情况设置,导航sdk已经全面支持https)、”NSLocationAlwaysUsageDescription”、”NSLocationWhenInUseUsageDescription”(两个定位功能请求可以任选一个不用两个都选)、 ”View controller-based status bar appearance”这5项,如下图:
ios项目内嵌入百度地图导航实现_第4张图片

也可复制下面源码:
<key>NSLocationAlwaysUsageDescriptionkey>
<string>只有开启定位功能才能正常使用百度导航string>
<key>NSLocationWhenInUseUsageDescriptionkey>
<string>只有开启定位功能才能正常使用百度导航string>
<key>UIBackgroundModeskey>
<array>
<string>audiostring>
<string>locationstring>
array>
<key>UIViewControllerBasedStatusBarAppearancekey>
<false/>

第五步:进入正题-发起导航

(1)在AppDelegate.m中配置AK码

进入AppDelegate.m中,进行AK码设置并开启导航功能,代码如下:
ios项目内嵌入百度地图导航实现_第5张图片

#import "BNCoreServices.h"
#import "ViewController.h"
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {

//    初始化导航SDK
    [BNCoreServices_Instance initServices:BaiduMapAK];
    [BNCoreServices_Instance startServicesAsyn:nil fail:nil];

    return YES;
}

(2)在需要使用导航功能的controller.m中
import入需要使用的头文件,以及需要使用的delegate,代码如下:
ios项目内嵌入百度地图导航实现_第6张图片

#import "BNRoutePlanModel.h"
#import "BNCoreServices.h"
#import "BNaviModel.h"

@interface ViewController ()<BNNaviUIManagerDelegate,BNNaviRoutePlanDelegate>

@end

(3)在viewDidLoad中创建个Button用以调用方法(当然你也可以根据自己情况更换调用的方式),代码如下:
ios项目内嵌入百度地图导航实现_第7张图片

- (void)viewDidLoad {
    [super viewDidLoad];

    UIButton *button = [[UIButton alloc]init];
    button.frame = CGRectMake(160, 100, 100, 100);
    [button setTitle:@"开始导航" forState:UIControlStateNormal];
    [button setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal];
    [button setBackgroundColor:[UIColor grayColor]];
    [button addTarget:self action:@selector(startNavi) forControlEvents:UIControlEventTouchUpInside];
    [self.view addSubview:button];

}

(4)进入正题,调用方法实现,代码如下:
ios项目内嵌入百度地图导航实现_第8张图片

//发起导航
- (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];
}

尾声:以上仔细跟随下来就能实现啦,贴一张效果图

ios项目内嵌入百度地图导航实现_第9张图片

你可能感兴趣的:(地图开发)