浏览器版本低!无法浏览完整内容,建议升级或更换浏览器。
货车路线规划与导航
下载开发文档

货车导航算路偏好表:

常量名说明
BNRoutePlanMode_Recommend默认 (时间优先)
BNRoutePlanMode_RoadFirst距离优先
BNRoutePlanMode_NoHeighWay少走高速
BNRoutePlanMode_EconomicRoute经济路线
BNRoutePlanMode_SaveTime | BNRoutePlanMode_NoHeighWay时间优先+少走高速
BNRoutePlanMode_LessJam躲避拥堵
BNRoutePlanMode_LessToll少收费
BNRoutePlanMode_LessJam | BNRoutePlanMode_NoHeighWay躲避拥堵+不走高速
BNRoutePlanMode_LessToll | BNRoutePlanMode_NoHeighWay少收费+不走高速
BNRoutePlanMode_LessJam | BNRoutePlanMode_LessToll 躲避拥堵+少收费
BNRoutePlanMode_LessJam | BNRoutePlanMode_LessToll | BNRoutePlanMode_NoHeighWay躲避拥堵+少收费+不走高速
BNRoutePlanMode_LessJam | BNRoutePlanMode_MainRoad躲避拥堵+高速优先
货车路线规划与导航

货车路线规划与导航的方法和驾车类似,只需要把路线规划和导航的类型设置为货车即可。详细请参考驾车路线规划

开发者可以在货车路线规划前设置货车车牌,在货车的路径规划策略中,会将货车特有的限高、限重、车型等信息加入到路径规划策略中进行计算。

设置货车车牌例子如下:

// 设置货车信息
- (void)setTruckInfo {
BMTruckInfoModel *model = [[BMTruckInfoModel alloc] init];
// 货车类型的车辆牌照的类型
model.truckCarType = BNTruckCarTypeCommon;
model.truckType = BMTruckTypeMicro; // 货车类型的车辆牌照的类型
model.powerType = BMTruckPowerTypeGasoline; // 动力类型
model.carNumber = @"京A66666"; // 车牌号 例如:京B88888
model.emission = 1 * 1000; // 排放标准 例如:国五 emission = 5
model.weight = 2.565 * 1000; // 车重单位kg 0~100吨 例如:1吨 weight = 1 * 1000
model.load = 1.73 * 1000; // 载重单位kg 0~100吨 例如:1吨 load = 1 * 1000
model.length = 6 * 1000; // 车长单位mm 0~25米 例如:1米 length = 1 * 1000
model.width = 2.15 * 1000; // 车宽单位mm 0~5米 例如:1米 width = 1 * 1000
model.height = 3.5 * 1000; // 车高单位mm 0~10米 例如:1米 height = 1 * 1000
model.axleNumber = 2; // 轴数 例如 3轴 axleNumber = 3;
model.plateColor = BNTruckPlateColorGreen; // 车牌颜色
model.axleWeight = 2 * 1000; // 轴重单位kg 0~100吨 例如:1吨 weight = 1 * 1000
model.oilCost = 13 * 1000; // 百公里油耗 毫升 0~150L 例如:百公里耗油20升 oilCost = 20 * 1000
[BNaviService_Strategy syncTruckInfoModel:model];
}
特别注意:货车路径规划是收费接口,您如果申请试用或者正式应用都请通过工单系统提交商务合作类工单商务合作类工单进行沟通,否则默认是无法算路成功的。

和驾车、摩托车相比,货车支持偏航后传入指定路线以及私有路线功能,下面分别介绍这两个能力。

偏航后传入指定路线

偏航后传入指定路线是指支持在货车导航过程中,如果发生了偏航,开发者可以传入指定的路线继续导航。

使用方式
1. 设置偏航后使用的路线方法

使用货车偏航后传入指定路线功能,需要将BNStrategyManagerProtocol中的yawSpecifiedRouteNavigation设置好,其中0(默认,可以不设置)代表偏航后百度服务器返回偏航路线,1代表偏航后客户服务器返回偏航路线,2代表偏航后回到进入导航时选择的路线。代码示例如下:

///设置偏航后回到用户指定路线导航
/** 货车SDK偏航路线模式0 默认策略,1 偏航路线api提供,2 偏航会进入导航时选的路线*/
@property (nonatomic, assign) int yawSpecifiedRouteNavigation;
BNaviService_Strategy.yawSpecifiedRouteNavigation = 1;
2. 获取路线的extraInfo,再次发起算路

货车行中偏航时会有naviYawingDidStart:方法回调,如果yawSpecifiedRouteNavigation设置为1时(设置为0或2时不需要处理,会自动算路),开发者需要在该回调方法内把extraInfo信息传给导航SDK。

注:extraInfo一般是开发者的服务端从导航SDK服务端获取,开发者客户端再从开发者服务端获取。

/**
* 导航中开始偏航
* @paramyawing Stamp falg信息,yawSpecifiedRouteNavigation设置为1时 开发者需要将flag和其他货车信息传给客户端服务器。
*/
- (void)naviYawingDidStart:(BNaviModel *)model withStamp:(NSString *)yawingStamp
{
// yawSpecifiedRouteNavigation设置为0或2时不需要进行如下的处理,将会根据设置自动算路。
if ( BNaviService_Strategy.yawSpecifiedRouteNavigation != 1) {
return;
}
// 从开发者服务端获取extraInfo后,调用算路接口重新算路
NSString *extraInfo = @"此处填写获取到的extraInfo";
// 设置导航类型为货车导航
BN_NaviType naviType = BN_NaviTypeTruck;
//算路方法
[BNaviService_RoutePlan startNaviRoutePlan:BNRoutePlanMode_Recommend naviNodes:self.nodesArray time:nil delegete:self userInfo:@{BNaviTripTypeKey: @(naviType), BNaviRoutePlanAssignKey:extraInfo}];
}
私有路线功能

私有路线功能是指支持外部传入一条指定id的路线发起导航,具体实现方法是由BNRoutePlanManagerProtocol发起算路接口实现,在该接口中按照以下规则传入参数即可。

接口详情

/**
* 发起算路
*
* @param eMode 算路方式,定义见BNRoutePlanMode
* @param naviNodes 算路节点数组,起点、途经点、终点按顺序排列,节点信息为BNRoutePlanNode结构
* @param naviTime 发起算路时间,用于优化算路结果,可以为nil
* @param delegate 算路委托,用于回调
* @param userInfo 用户需要传入的参数,货车导航算路需要传入BNaviTripTypeKey,值为BN_NaviTypeTruck
* 支持传入参数:
*BNaviTripTypeKey:NSNumber *, 可选,BN_NaviType类型,不传默认为驾车。
*(1)货车,传@(BN_NaviTypeTruck)
*(2)驾车,传@(BN_NaviTypeReal)
*(3)摩托车,传@(BN_NaviTypeMoto)
*trajectory_restore: NSDictionary*, 可选,提供私有路线功能,内传两对 key-value
*type - 和服务约定的type类型
*id - 从服务获取的id数据
*/
- (void)startNaviRoutePlan:(BNRoutePlanMode)eMode
naviNodes:(NSArray*)naviNodes
time:(BNaviCalcRouteTime*)naviTime
delegete:(id<BNNaviRoutePlanDelegate>)delegate
userInfo:(NSDictionary*)userInfo;

代码示例

-(void)starRoute:(BOOL)isReal {
BN_NaviType naviType = BN_NaviTypeTruck;
// 私有路线功能,在算路接口的userInfoinfo中传入一个key为@”trajectory_restore“的字典,字典中传入两个键值对,type - 固定传8,id - 服务端获取
NSDictionary *dict = @{@"type":@"8",@"id":@"0421a1c5864e4045acb826579dac4b82"};
[BNaviService_RoutePlan startNaviRoutePlan:BNRoutePlanMode_Recommend naviNodes:self.nodesArray time:nil delegete:self userInfo:@{BNaviTripTypeKey: @(naviType),@"trajectory_restore":dict}];
}

上一篇

其他自定义能力

下一篇

货运方案

本篇文章对您是否有帮助?