{"version":"0.1.0","code":"0000","result":true,"message":"处理成功","errdetail":"","timestamp":1671508851668,"data":{"id":71714116,"title":"5.3.10 算路优先级扩展","slug":"anbuav","format":"lake","bookId":26046811,"body":null,"body_draft":null,"body_html":"
<610版本,AutoSDK内部会默认执行优先级管理策略:客户端首次发起算路请求后,在未收到算路应答前,如果又发起一次新的算路请求,会触发优先级管理策略。具体规则如下:
<610版本AutoSDK的算路优先级,只有“碰撞”一种类型。即,先后发起的算路请求A和B,SDK会根据A和B的算路类型,决定A被取消,保留B;或者B被取消,保留A。A和B一定会有一个被取消,因此成为碰撞。
但是在实际业务类型中,还存在“串行等待”这种类型。即A和B不会产生碰撞,后发起的B会等待先发起的A应答回调结束,再进行请求。
在>=610版本AutoSDK提供了算路优先级碰撞的扩展能力。
首先可以选择算路的串行&并行。
并行算路:
不进行任何的优先级碰撞,直接对网络端发起算路请求,但是受限于带宽,最大有效并发数为2。
串行算路:
提供了三种优先级方案:
(1) AutoSDK原生的优先级碰撞方案。
(2) 高德Auto公版的优先级碰撞方案。
(3) HMI自定义的优先级碰撞方案。【此方案需要联系AutoSDK,AutoSDK按照客户的要求定制优先级碰撞表文件,重新出渠道包】
用户主动重算,优先级为1(最高),具体如下算路类型:
com.autonavi.gbl.common.path.option.RouteType.RouteTypeCommon: //1 普通算路\ncom.autonavi.gbl.common.path.option.RouteType.RouteTypeChangeStratege: //3 切换策略\ncom.autonavi.gbl.common.path.option.RouteType.RouteTypeParallelRoute: //4 平行路切换\ncom.autonavi.gbl.common.path.option.RouteType.RouteTypeChangeJnyPnt: //9 停车场模式/沿途搜索设置行程点\ncom.autonavi.gbl.common.path.option.RouteType.RouteTypeManualRefresh: //12 手动刷新\ncom.autonavi.gbl.common.path.option.RouteType.RouteTypeAvoid: //15 骑行导航中请求避让路线\ncom.autonavi.gbl.common.path.option.RouteType.RouteTypeDispatch: //16 交警调度请求路线\ncom.autonavi.gbl.common.path.option.RouteType.RouteTypeVoiceChangeDest: //17 语音更换目的地\ncom.autonavi.gbl.common.path.option.RouteType.RouteTypeSwitchMode: //21 导航中驾驶模式切换(在线电动车专用)\ncom.autonavi.gbl.common.path.option.RouteType.RouteTypeVoiceAddViaPoint: //23 语音追加途经点\ncom.autonavi.gbl.common.path.option.RouteType.RouteTypeGroupChangeDest: //26 导航中更换目的地
用户被动重算,优先级相对较低,分为【偏航重算】和【静默重算】:
com.autonavi.gbl.common.path.option.RouteType.RouteTypeYawRoute: //2 偏航重算
com.autonavi.gbl.common.path.option.RouteType.RouteTypeTMC: //5 tmc引起的重算\ncom.autonavi.gbl.common.path.option.RouteType.RouteTypeLimitLine: \t\t//6 道路限行 (车牌限行)\ncom.autonavi.gbl.common.path.option.RouteType.RouteTypeDamagedRoad: //7 道路关闭\ncom.autonavi.gbl.common.path.option.RouteType.RouteTypeUpdateCityData: //10 更新城市数据引起的重算\ncom.autonavi.gbl.common.path.option.RouteType.RouteTypeLimitForbid: //11 限时禁行引起的重算(在线)\ncom.autonavi.gbl.common.path.option.RouteType.RouteTypeLimitForbidOffLine: //13 限时禁行引起的重算(本地)\ncom.autonavi.gbl.common.path.option.RouteType.RouteTypeMutiRouteRequest: //14 导航中请求备选路线
高德Auto公版相比于AutoSDK原生优先级碰撞,因为原生的普通算路类型RouteTypeCommon,不足以表达高德Auto公版的业务,Auto在原生的算路类型基础上,将普通算路扩展拆分为普通算路、第三方调用算路、通行算路。而这三种算路,有不同的优先级碰撞属性,因此单独的一种RouteTypeCommon,已不足以表达这种业务场景。
注意:当使用高德Auto公版的优先级碰撞时,算路时候会按照RouteOption.setPriorityType接口进行优先级碰撞,这个接口在使用AutoSDK原生优先级碰撞方案时不需要设置。具体设置的值参考下表中的PriorityType值一栏。
PriorityType序号 | 右侧栏是先发起的算路请求 下侧栏是后发起的算路请求 | 常规算路 | 常规算路 | 常规算路 | 常规算路 | 偏航重算 | 切换策略 | 平行路切换 | tmc重算 | 道路限行(车牌限行) | 道路关闭 | 停车场模式/沿途搜索设置行程点 | 限时禁行引起的重算(在线) | 手动刷新 | 限时禁行引起重算(本地) | 导航中请求备选路线 | 语音更换目的地 | 导航中驾驶模式切换(在线电动车专用) | 语音追加途经点 | 路线还原请求 |
0 | 常规算路 | 1. 新请求缓存(入队列),当前算路请求完成后再进行新请求 | 1. 新请求缓存(入队列),当前算路请求完成后再进行新请求 |
|
| 1. 新请求缓存(入队列),当前算路请求完成后再进行新请求 | 1. 新请求缓存(入队列),当前算路请求完成后再进行新请求 | 1. 新请求缓存(入队列),当前算路请求完成后再进行新请求 |
|
|
| 1. 新请求缓存(入队列),当前算路请求完成后再进行新请求 |
| 1. 新请求缓存(入队列),当前算路请求完成后再进行新请求 |
|
| 1. 新请求缓存(入队列),当前算路请求完成后再进行新请求 | 1. 新请求缓存(入队列),当前算路请求完成后再进行新请求 | 1. 新请求缓存(入队列),当前算路请求完成后再进行新请求 | 1. 新请求缓存(入队列),当前算路请求完成后再进行新请求 |
1 | 常规算路 | 1. 新请求缓存(入队列),当前算路请求完成后再进行新请求 | 1. 新请求缓存(入队列),当前算路请求完成后再进行新请求 |
|
| 1. 新请求缓存(入队列),当前算路请求完成后再进行新请求 | 1. 新请求缓存(入队列),当前算路请求完成后再进行新请求 | 1. 新请求缓存(入队列),当前算路请求完成后再进行新请求 |
|
|
| 1. 新请求缓存(入队列),当前算路请求完成后再进行新请求 |
| 1. 新请求缓存(入队列),当前算路请求完成后再进行新请求 |
|
| 1. 新请求缓存(入队列),当前算路请求完成后再进行新请求 | 1. 新请求缓存(入队列),当前算路请求完成后再进行新请求 | 1. 新请求缓存(入队列),当前算路请求完成后再进行新请求 | 1. 新请求缓存(入队列),当前算路请求完成后再进行新请求 |
2 | 常规算路 | 1.新请求丢弃 | 1.新请求丢弃 | 1. 新请求缓存(入队列),当前算路请求完成后再进行新请求 | 1. 新请求缓存(入队列),当前算路请求完成后再进行新请求 | 1.新请求丢弃 | 1.新请求丢弃 | 1.新请求丢弃 | 1. 新请求缓存(入队列),当前算路请求完成后再进行新请求 | 1. 新请求缓存(入队列),当前算路请求完成后再进行新请求 | 1. 新请求缓存(入队列),当前算路请求完成后再进行新请求 | 1.新请求丢弃 | 1. 新请求缓存(入队列),当前算路请求完成后再进行新请求 | 1.新请求丢弃 | 1. 新请求缓存(入队列),当前算路请求完成后再进行新请求 | 1. 新请求缓存(入队列),当前算路请求完成后再进行新请求 | 1.新请求丢弃 | 1.新请求丢弃 | 1.新请求丢弃 | 1.新请求丢弃 |
3 | 常规算路 | 1. 新请求缓存(入队列),当前算路请求完成后再进行新请求 | 1. 新请求缓存(入队列),当前算路请求完成后再进行新请求 | 1. 新请求缓存(入队列),当前算路请求完成后再进行新请求 | 1. 新请求缓存(入队列),当前算路请求完成后再进行新请求 | 1. 新请求缓存(入队列),当前算路请求完成后再进行新请求 | 1. 新请求缓存(入队列),当前算路请求完成后再进行新请求 | 1. 新请求缓存(入队列),当前算路请求完成后再进行新请求 | 1. 新请求缓存(入队列),当前算路请求完成后再进行新请求 | 1. 新请求缓存(入队列),当前算路请求完成后再进行新请求 | 1. 新请求缓存(入队列),当前算路请求完成后再进行新请求 | 1. 新请求缓存(入队列),当前算路请求完成后再进行新请求 | 1. 新请求缓存(入队列),当前算路请求完成后再进行新请求 | 1. 新请求缓存(入队列),当前算路请求完成后再进行新请求 | 1. 新请求缓存(入队列),当前算路请求完成后再进行新请求 | 1. 新请求缓存(入队列),当前算路请求完成后再进行新请求 | 1. 新请求缓存(入队列),当前算路请求完成后再进行新请求 | 1. 新请求缓存(入队列),当前算路请求完成后再进行新请求 | 1. 新请求缓存(入队列),当前算路请求完成后再进行新请求 | 1. 新请求缓存(入队列),当前算路请求完成后再进行新请求 |
4 | 偏航重算 | 1. 新请求缓存(入队列),当前算路请求完成后再进行新请求 | 1. 新请求缓存(入队列),当前算路请求完成后再进行新请求 | 1. 新请求缓存(入队列),当前算路请求完成后再进行新请求 | 1. 新请求缓存(入队列),当前算路请求完成后再进行新请求 | 1. 新请求缓存(入队列),当前算路请求完成后再进行新请求 | 1. 新请求缓存(入队列),当前算路请求完成后再进行新请求 | 1. 新请求缓存(入队列),当前算路请求完成后再进行新请求 |
|
|
| 1. 新请求缓存(入队列),当前算路请求完成后再进行新请求 |
| 1. 新请求缓存(入队列),当前算路请求完成后再进行新请求 |
|
| 1. 新请求缓存(入队列),当前算路请求完成后再进行新请求 | 1. 新请求缓存(入队列),当前算路请求完成后再进行新请求 | 1. 新请求缓存(入队列),当前算路请求完成后再进行新请求 | 1. 新请求缓存(入队列),当前算路请求完成后再进行新请求 |
5 | 切换策略 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
6 | 平行路切换 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
7 | tmc重算 | 1. 新请求缓存(入队列),当前算路请求完成后再进行新请求 | 1. 新请求缓存(入队列),当前算路请求完成后再进行新请求 | 1. 新请求缓存(入队列),当前算路请求完成后再进行新请求 | 1. 新请求缓存(入队列),当前算路请求完成后再进行新请求 | 1. 新请求缓存(入队列),当前算路请求完成后再进行新请求 | 1. 新请求缓存(入队列),当前算路请求完成后再进行新请求 | 1. 新请求缓存(入队列),当前算路请求完成后再进行新请求 | 1. 新请求缓存(入队列),当前算路请求完成后再进行新请求 | 1. 新请求缓存(入队列),当前算路请求完成后再进行新请求 | 1. 新请求缓存(入队列),当前算路请求完成后再进行新请求 | 1. 新请求缓存(入队列),当前算路请求完成后再进行新请求 | 1. 新请求缓存(入队列),当前算路请求完成后再进行新请求 | 1. 新请求缓存(入队列),当前算路请求完成后再进行新请求 | 1. 新请求缓存(入队列),当前算路请求完成后再进行新请求 | 1. 新请求缓存(入队列),当前算路请求完成后再进行新请求 | 1. 新请求缓存(入队列),当前算路请求完成后再进行新请求 | 1. 新请求缓存(入队列),当前算路请求完成后再进行新请求 | 1. 新请求缓存(入队列),当前算路请求完成后再进行新请求 | 1. 新请求缓存(入队列),当前算路请求完成后再进行新请求 |
8 | 道路限行(车牌限行) | 1. 新请求缓存(入队列),当前算路请求完成后再进行新请求 | 1. 新请求缓存(入队列),当前算路请求完成后再进行新请求 | 1. 新请求缓存(入队列),当前算路请求完成后再进行新请求 | 1. 新请求缓存(入队列),当前算路请求完成后再进行新请求 | 1. 新请求缓存(入队列),当前算路请求完成后再进行新请求 | 1. 新请求缓存(入队列),当前算路请求完成后再进行新请求 | 1. 新请求缓存(入队列),当前算路请求完成后再进行新请求 | 1. 新请求缓存(入队列),当前算路请求完成后再进行新请求 | 1. 新请求缓存(入队列),当前算路请求完成后再进行新请求 | 1. 新请求缓存(入队列),当前算路请求完成后再进行新请求 | 1. 新请求缓存(入队列),当前算路请求完成后再进行新请求 | 1. 新请求缓存(入队列),当前算路请求完成后再进行新请求 | 1. 新请求缓存(入队列),当前算路请求完成后再进行新请求 | 1. 新请求缓存(入队列),当前算路请求完成后再进行新请求 | 1. 新请求缓存(入队列),当前算路请求完成后再进行新请求 | 1. 新请求缓存(入队列),当前算路请求完成后再进行新请求 | 1. 新请求缓存(入队列),当前算路请求完成后再进行新请求 | 1. 新请求缓存(入队列),当前算路请求完成后再进行新请求 | 1. 新请求缓存(入队列),当前算路请求完成后再进行新请求 |
9 | 道路关闭 | 1. 新请求缓存(入队列),当前算路请求完成后再进行新请求 | 1. 新请求缓存(入队列),当前算路请求完成后再进行新请求 | 1. 新请求缓存(入队列),当前算路请求完成后再进行新请求 | 1. 新请求缓存(入队列),当前算路请求完成后再进行新请求 | 1. 新请求缓存(入队列),当前算路请求完成后再进行新请求 | 1. 新请求缓存(入队列),当前算路请求完成后再进行新请求 | 1. 新请求缓存(入队列),当前算路请求完成后再进行新请求 | 1. 新请求缓存(入队列),当前算路请求完成后再进行新请求 | 1. 新请求缓存(入队列),当前算路请求完成后再进行新请求 | 1. 新请求缓存(入队列),当前算路请求完成后再进行新请求 | 1. 新请求缓存(入队列),当前算路请求完成后再进行新请求 | 1. 新请求缓存(入队列),当前算路请求完成后再进行新请求 | 1. 新请求缓存(入队列),当前算路请求完成后再进行新请求 | 1. 新请求缓存(入队列),当前算路请求完成后再进行新请求 | 1. 新请求缓存(入队列),当前算路请求完成后再进行新请求 | 1. 新请求缓存(入队列),当前算路请求完成后再进行新请求 | 1. 新请求缓存(入队列),当前算路请求完成后再进行新请求 | 1. 新请求缓存(入队列),当前算路请求完成后再进行新请求 | 1. 新请求缓存(入队列),当前算路请求完成后再进行新请求 |
10 | 停车场模式/沿途搜索设置行程点 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
11 | 限时禁行引起的重算(在线) | 1. 新请求缓存(入队列),当前算路请求完成后再进行新请求 | 1. 新请求缓存(入队列),当前算路请求完成后再进行新请求 | 1. 新请求缓存(入队列),当前算路请求完成后再进行新请求 | 1. 新请求缓存(入队列),当前算路请求完成后再进行新请求 | 1. 新请求缓存(入队列),当前算路请求完成后再进行新请求 | 1. 新请求缓存(入队列),当前算路请求完成后再进行新请求 | 1. 新请求缓存(入队列),当前算路请求完成后再进行新请求 | 1. 新请求缓存(入队列),当前算路请求完成后再进行新请求 | 1. 新请求缓存(入队列),当前算路请求完成后再进行新请求 | 1. 新请求缓存(入队列),当前算路请求完成后再进行新请求 | 1. 新请求缓存(入队列),当前算路请求完成后再进行新请求 | 1. 新请求缓存(入队列),当前算路请求完成后再进行新请求 | 1. 新请求缓存(入队列),当前算路请求完成后再进行新请求 | 1. 新请求缓存(入队列),当前算路请求完成后再进行新请求 | 1. 新请求缓存(入队列),当前算路请求完成后再进行新请求 | 1. 新请求缓存(入队列),当前算路请求完成后再进行新请求 | 1. 新请求缓存(入队列),当前算路请求完成后再进行新请求 | 1. 新请求缓存(入队列),当前算路请求完成后再进行新请求 | 1. 新请求缓存(入队列),当前算路请求完成后再进行新请求 |
12 | 手动刷新 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
13 | 限时禁行引起重算(本地) | 1. 新请求缓存(入队列),当前算路请求完成后再进行新请求 | 1. 新请求缓存(入队列),当前算路请求完成后再进行新请求 | 1. 新请求缓存(入队列),当前算路请求完成后再进行新请求 | 1. 新请求缓存(入队列),当前算路请求完成后再进行新请求 | 1. 新请求缓存(入队列),当前算路请求完成后再进行新请求 | 1. 新请求缓存(入队列),当前算路请求完成后再进行新请求 | 1. 新请求缓存(入队列),当前算路请求完成后再进行新请求 | 1. 新请求缓存(入队列),当前算路请求完成后再进行新请求 | 1. 新请求缓存(入队列),当前算路请求完成后再进行新请求 | 1. 新请求缓存(入队列),当前算路请求完成后再进行新请求 | 1. 新请求缓存(入队列),当前算路请求完成后再进行新请求 | 1. 新请求缓存(入队列),当前算路请求完成后再进行新请求 | 1. 新请求缓存(入队列),当前算路请求完成后再进行新请求 | 1. 新请求缓存(入队列),当前算路请求完成后再进行新请求 | 1. 新请求缓存(入队列),当前算路请求完成后再进行新请求 | 1. 新请求缓存(入队列),当前算路请求完成后再进行新请求 | 1. 新请求缓存(入队列),当前算路请求完成后再进行新请求 | 1. 新请求缓存(入队列),当前算路请求完成后再进行新请求 | 1. 新请求缓存(入队列),当前算路请求完成后再进行新请求 |
14 | 导航中请求备选路线 | 1. 新请求缓存(入队列),当前算路请求完成后再进行新请求 | 1. 新请求缓存(入队列),当前算路请求完成后再进行新请求 | 1. 新请求缓存(入队列),当前算路请求完成后再进行新请求 | 1. 新请求缓存(入队列),当前算路请求完成后再进行新请求 | 1. 新请求缓存(入队列),当前算路请求完成后再进行新请求 | 1. 新请求缓存(入队列),当前算路请求完成后再进行新请求 | 1. 新请求缓存(入队列),当前算路请求完成后再进行新请求 | 1. 新请求缓存(入队列),当前算路请求完成后再进行新请求 | 1. 新请求缓存(入队列),当前算路请求完成后再进行新请求 | 1. 新请求缓存(入队列),当前算路请求完成后再进行新请求 | 1. 新请求缓存(入队列),当前算路请求完成后再进行新请求 | 1. 新请求缓存(入队列),当前算路请求完成后再进行新请求 | 1. 新请求缓存(入队列),当前算路请求完成后再进行新请求 | 1. 新请求缓存(入队列),当前算路请求完成后再进行新请求 | 1. 新请求缓存(入队列),当前算路请求完成后再进行新请求 | 1. 新请求缓存(入队列),当前算路请求完成后再进行新请求 | 1. 新请求缓存(入队列),当前算路请求完成后再进行新请求 | 1. 新请求缓存(入队列),当前算路请求完成后再进行新请求 | 1. 新请求缓存(入队列),当前算路请求完成后再进行新请求 |
15 | 语音更换目的地 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
16 | 导航中驾驶模式切换(在线电动车专用) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
17 | 语音追加途经点 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
18 | 路线还原请求 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
并行算路
串行算路优先级碰撞
/**\n* @brief 算路服务初始化参数\n*/\npublic class RouteInitParam {\n /**\n * 自动重算参数\n */\n public RerouteParam rerouteParam;\n /**\n * 优先级碰撞参数\n */\n public RouteCollisionParam collisionParam;\n}\n
/**\n* @brief 串/并算路、优先级碰撞方案选择参数\n*/\npublic class RouteCollisionParam {\n /**\n * 算路请求串行/并行选择\n */\n public @RouteSerialParallelState.RouteSerialParallelState1 int state;\n /**\n * 串行算路时的优先级碰撞方案\n */\n public @RouteCollisionSolution.RouteCollisionSolution1 int solution;\n /**\n * HMI 制定的算路优先级碰撞方案的配置文件, 当solution为JsonFileCollisionSolution时生效\n */\n public String hmiRouteRequestPriorityFile;\n}\n
int com.autonavi.gbl.route.RouteService.init(RouteInitParam param)
com.autonavi.gbl.common.path.option.RouteOption.setPriorityType(long priorityType)