一、申请安全码

二、导入SDK,添加依赖库
1、根据项目需求(定位?路径规划?)下载所需要的SDK包,传送门:下载百度地图SDK,并拖进项目中。

2、添加依赖库
(1)如图打开该位置Targets——>Bulid Phases——>Link Binary With Libraries

(2)添加以下依赖库

(3)添加百度地图SDK中的库文件
方法:Targets——>Bulid Phases——>Link Binary With Libraries,点击“+”,点击Add Other...,从拖进项目的SDK包中寻找到对应的.a文件加入。


(4)运行一下,如果没有报错说明导入成功,如果报错,比如图2-7的错误,请仔细检查是否导入依赖库的时候遗漏了。

(5)引入mapapi.bundle资源文件(摘抄百度地图集成文档)
如果使用了基础地图功能,需要添加该资源,否则地图不能正常显示mapapi.bundle中存储了定位、默认大头针标注View及路线关键点的资源图片,还存储了矢量地图绘制必需的资源文件。如果您不需要使用内置的图片显示功能,则可以删除bundle文件中的image文件夹。您也可以根据具体需求任意替换或删除该bundle中image文件夹的图片文件。
添加方法: 选中工程名,在右键菜单中选择Add Files to “工程名”…,从BaiduMapAPI_Map.framework||Resources文件中选择mapapi.bundle文件,并勾选“Copy items if needed”复选框,单击“Add”按钮,将资源文件添加到工程中。

(6)环境配置
(1)在TARGETS->Build Settings->Other Linker Flags 中添加-ObjC,字母O和C大写。
(2)在TARGETS->Build Settings->Compile Sources As 改成Object-C++,并且把AppDelegate.m文件改为AppDelegate.mm。(不然你会崩溃的)
三、部署代码
在使用SDK的类 按需 引入下边的头文件:

1、初始化BMKMapManager
在您的AppDelegate.h文件中添加BMKMapManager的定义
@interface AppDelegate : UIResponder {
UINavigationController *navigationController;
BMKMapManager* _mapManager; }
然后,在方法- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions中加入以下代码来初始化百度导航SDK
_mapManager = [[BMKMapManager alloc]init]; // 如果要关注网络及授权验证事件,请设定 generalDelegate参数 BOOL ret = [_mapManager start:@"在此处输入您的授权Key" generalDelegate:nil];
if (!ret) {
NSLog(@"manager start failed!");
}
// Add the navigation controller's view to the window and display. [self.window addSubview:navigationController.view];
如果需要加入语音导航,那么还需要去申请TTS,传送门:百度TTS申请(语音播报),拿到App ID。

拿到App ID后可以设置语音播报了。
[BNCoreServices_Instance setTTSAppId:kBDMapTTSAppID];
2.在需要弹出地图的VC中设置
设置.m文件
创建BMKMapView
BMKMapView* mapView = [[BMKMapView alloc]initWithFrame:self.view.bounds];
self.view = mapView;
自2.0.0起,BMKMapView新增viewWillAppear、viewWillDisappear方法来控制BMKMapView的生命周期,并且在一个时刻只能有一个BMKMapView接受回调消息,因此在使用BMKMapView的viewController中需要在viewWillAppear、viewWillDisappear方法中调用BMKMapView的对应的方法,并处理delegate,代码如下:
-(void)viewWillAppear:(BOOL)animated {
[_mapView viewWillAppear];
_mapView.delegate = self; // 此处记得不用的时候需要置nil,否则影响内存的释放 } -(void)viewWillDisappear:(BOOL)animated {
[_mapView viewWillDisappear];
_mapView.delegate = nil; // 不用时,置nil }
>>>>遇到问题
1>-[__NSCFString uuid_stringFromMD5]: unrecognized selector sent to instance 0x1c466cdc0
解决方案:build setting ——> other linker flags 添加-all_load
网友评论