Appearance
路线规划
路线规划功能可以根据起终点经纬度,可以规划出一条路线展示在地图上,也可以用于导航
初始化导航实例
添加依赖库
- 将解压后的
DMKNaviSDK.framework文件copy或拖拽到工程文件夹中 - 左侧目录中选中工程名,到 TARGETS->Build Phases-> Link Binary With Libaries 菜单,将
DMKNaviSDK.framework拖拽进这个菜单 - TARGETS->Build Settings->Other Linker Flags 需要添加参数 -ObjC
添加资源包
- 导航SDK的资源包
DMKNaviSDK.bundle在DMKNaviSDK.framework,DMKNaviSDK.bundle存储了导航SDK运行必备的资源图片、相关配置文件等 DMKNaviSDK.bundle需要加到 TARGETS->Build Phases-> Copy Bundle Resources 菜单中来保证app运行前会拷贝到App主bundle里
调用初始化方法
在使用导航相关功能前,需要调用初始化方法来初始化一些公共实例
objc
#import <DMKNaviSDK/DMKNavigationManager.h>
//...
[DMKNavigationManager setup];
//...初始化路线规划相关类
DMKNavigationManager是管理路线规划和导航的类,初始化DMKNavigationManager需要先创建DMKNaviDriverView,用来展示规划好的路线,同时会帮你创建好地图实例,无需重复创建
objc
DMKNaviDriverView *naviDriverView = [[DMKNaviDriverView alloc] initWithFrame:self.view.bounds];
[self.view addSubview: naviDriverView];
self.naviDriverView = naviDriverView;
[self.naviDriverView setNaviInfoPanelHidden:YES];
DMKNavigationManager *navigationManager = [[DMKNavigationManager alloc] initWithNaviDriverView:self.naviDriverView];
self.navigationManager = navigationManager;
self.navigationManager.delegate = self;驾车路线规划
规划一条路线需要提供路线的起点、终点、用户手机号等信息。
DMKNaviPoint用来表示路线起点和终点信息DMKNaviUserInfo用来表示用户相关信息DMKNaviOrderInfo用来表示订单信息
以下是具体场景的代码示例:
1 规划订单所需的路线
规划订单所需的路线需要构造
DMKNaviOrderInfo、DMKNaviUserInfo并调用DMKNavigationManager的searchOrderRouteWithStartPoint:endPoint:orderInfo:userInfo:方法相关参数说明:
| 参数 | 说明 | 是否必填 |
|---|---|---|
| orderSource | 订单类型,滴图订单=DMKReqOrderSourceDIDI,其他订单=DMKReqOrderSourceDIDI | 是 |
| orderId | 订单号 | 是 |
| orderStage | 订单阶段,接乘客=1,送乘客=4 | 是 |
| uid | 用户唯一标识,用于关联用户数据 | 是 |
| phone | 手机号,方便查问题用 | 否 |
- 代码示例
objc
DMKNaviPoint *start = [[DMKNaviPoint alloc] initWithLatitude:40.050614 longitude:116.288738];
DMKNaviPoint *end = [[DMKNaviPoint alloc] initWithLatitude:39.942587 longitude:116.355848];
DMKNaviOrderInfo *orderInfo = [[DMKNaviOrderInfo alloc] init];
orderInfo.orderId = @"000111222222223344";
orderInfo.orderStage = 1;
orderInfo.orderSource = DMKReqOrderSourceOPEN;
DMKNaviUserInfo *userInfo = [[DMKNaviUserInfo alloc] init];
userInfo.uid = @"334343";
userInfo.phoneNum = @"18611516867";
[self.navigationManager searchOrderRouteWithStartPoint:start endPoint:end orderInfo:orderInfo userInfo:userInfo];2 规划非订单所需的路线
规划非订单所需的路线需要构造
DMKNaviUserInfo并调用DMKNavigationManager的searchNormalRouteWithStartPoint:endPoint:userInfo:方法相关参数说明:
| 参数 | 说明 | 是否必填 |
|---|---|---|
| uid | 用户唯一标识,用于关联用户数据 | 是 |
| phone | 手机号,方便查问题用 | 否 |
- 代码示例:
objc
DMKNaviPoint *start = [[DMKNaviPoint alloc] initWithLatitude:40.050614 longitude:116.288738];
DMKNaviPoint *end = [[DMKNaviPoint alloc] initWithLatitude:40.052798 longitude:116.306076];
DMKNaviUserInfo *userInfo = [[DMKNaviUserInfo alloc] init];
userInfo.uid = @"334343";
userInfo.phoneNum = @"18611516867";
[self.navigationManager searchNormalRouteWithStartPoint:start endPoint:end userInfo:userInfo];3 获取路线规划结果
实现DMKNavigationManager.h中定义的DMKNavigationManagerDelegate后,就可以在回调方法中收到路线规划成功或失败的结果,并画到地图上:
objc
// 路线规划成功
- (void)routeSearchSuccessedWithResult:(DMKRouteResult *)result {
self.routeResult = result;
// 把结果画到地图上
[self.naviDriverView.mapView showSearchRoute:result routeColor:-1];
}
// 路线规划失败
- (void)routeSearchFailedWithError:(NSError *)error {
// 进行一些提示
}