货车导航算路偏好表:
常量名 | 说明 |
---|---|
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"; // 车牌号 例如:京B88888model.emission = 1 * 1000; // 排放标准 例如:国五 emission = 5model.weight = 2.565 * 1000; // 车重单位kg 0~100吨 例如:1吨 weight = 1 * 1000model.load = 1.73 * 1000; // 载重单位kg 0~100吨 例如:1吨 load = 1 * 1000model.length = 6 * 1000; // 车长单位mm 0~25米 例如:1米 length = 1 * 1000model.width = 2.15 * 1000; // 车宽单位mm 0~5米 例如:1米 width = 1 * 1000model.height = 3.5 * 1000; // 车高单位mm 0~10米 例如:1米 height = 1 * 1000model.axleNumber = 2; // 轴数 例如 3轴 axleNumber = 3;model.plateColor = BNTruckPlateColorGreen; // 车牌颜色model.axleWeight = 2 * 1000; // 轴重单位kg 0~100吨 例如:1吨 weight = 1 * 1000model.oilCost = 13 * 1000; // 百公里油耗 毫升 0~150L 例如:百公里耗油20升 oilCost = 20 * 1000[BNaviService_Strategy syncTruckInfoModel:model];}
和驾车、摩托车相比,货车支持偏航后传入指定路线以及私有路线功能,下面分别介绍这两个能力。
偏航后传入指定路线是指支持在货车导航过程中,如果发生了偏航,开发者可以传入指定的路线继续导航。
使用货车偏航后传入指定路线功能,需要将BNStrategyManagerProtocol中的yawSpecifiedRouteNavigation设置好,其中0(默认,可以不设置)代表偏航后百度服务器返回偏航路线,1代表偏航后客户服务器返回偏航路线,2代表偏航后回到进入导航时选择的路线。代码示例如下:
///设置偏航后回到用户指定路线导航/** 货车SDK偏航路线模式0 默认策略,1 偏航路线api提供,2 偏航会进入导航时选的路线*/@property (nonatomic, assign) int yawSpecifiedRouteNavigation;BNaviService_Strategy.yawSpecifiedRouteNavigation = 1;
货车行中偏航时会有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)eModenaviNodes:(NSArray*)naviNodestime:(BNaviCalcRouteTime*)naviTimedelegete:(id<BNNaviRoutePlanDelegate>)delegateuserInfo:(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}];}
上一篇
下一篇
本篇文章对您是否有帮助?