{"version":"0.1.0","code":"0000","result":true,"message":"处理成功","errdetail":"","timestamp":1671516326926,"data":{"id":71713249,"title":"5.3.5.7 规划页云控动态信息","slug":"nf5gkm","format":"lake","bookId":26046811,"body":null,"body_draft":null,"body_html":"
规划页云控动态信息包括事件云控信息,拥堵云控信息,禁行云控信息等,可提供行前规划页面提示的与路线相关的信息。该场景为拥堵云控信息的事例。其他场景可参考导航规划业务图层控制器(拥堵事件图层(路线外)、路线上拥堵线图层、路线上封路事件图层、路线外封路事件图层、路线上事件Tip图层、禁行图层)。
注:上图中“起点在限行路段,已无法避开”提示语由客户端控制显示,地图上的信息由图层内聚显示。
字段 | 说明 | 备注 |
vecRestrictCloudControl | 限行内容 | 限行提示、避开/未避开的限行信息 |
vecEventCloudControl | 事件 | 封路、路线干预、疫情检查站等事件 |
vecAvoidJamCloudControl | 躲避拥堵 | 已避开的拥堵 |
vecForbiddenCloudControl | 禁行及货车限制 | 禁行、货车限高限重限宽 |
vecHolidayCloudControl | 节假日 | 高速路段节假日免费 |
vecBankingHoursCloudControl | 营业时间 | 终点营业时间 |
其他 |
| 客户端无需关注,上述字段内部已经集成了各自对应的关联信息 |
云控动态信息细类数据结构目前有RestrictCloudControl/EventCloudControl/AvoidJamCloudControl/ForbiddenCloudControl/
HolidayCloudControl/BankingHoursCloudControl,详细释义可参照前文的CloudShowInfo字段说明表,每一种结构都由以下部分组成:
客户端可以结合云控信息中的tipType和部分业务补充内容字段,展示对应的提示信息,常用的字段如下:
信息类型 | 字段 | 说明 |
基础信息 | tipType | 用于判断云控信息的二级业务类别,目前已定义的类型详见tipType类型说明,后续云端会动态增加更多类型 |
prio | 建议的云控信息的展示优先级,客户端也可根据业务需要自行决定优先级 | |
RestrictCloudControl补充内容 | strCityName | tipType为建议设置车牌/建议开启限行时,该字段为限行城市名称 |
strContent | tipType为10或11时为限行内容,如"途经区域XX时间限行即将结束" | |
EventCloudControl补充内容 | strContent | 事件其他内容,如"湖光中街封路" |
AvoidJamCloudControl补充内容 | strJamRoadName strJamDist strJamTime avoidJamDetail.detailStatus | 拥堵道路名、长度、耗时、状态 |
ForbiddenCloudControl补充内容 | forbiddenDetail.nForbSubType | 0.限高 1.限宽 2.限重 3.禁止左转 4.禁止右转 5.禁止掉头 6.禁止右转调头 7.禁止直行 |
BankingHoursCloudControl补充内容 | strTime | 营业时间 |
tiptype | 类别 |
1 | 建议设置车牌 |
2 | 建议开启限行 |
3 | 已避开限行区域 |
4 | 起点在限行区域内,未避开限行 |
5 | 终点在限行区域内,未避开限行 |
6 | 途经点在限行区域内,未避开限行 |
7 | 途经限行区域,未避开限行 |
8 | 避开即将生效的限行,用户不能走完全程限行生效 |
9 | 已打开限行,限行即将失效,可以正常通过 |
10 | 途经区域XX时间限行即将结束,当前未避开限行 |
11 | 途经区域XX时间限行即将结束,当前已经避开限行 |
12 | 常走路线限行 |
21 | 起点所在道路上有避不开的封路事件 |
22 | 途经点所在道路上有避不开的封路事件 |
23 | 终点所在道路上有避不开的封路事件 |
24 | 非起点/途经点/终点所在道路上有避不开的封路事件 |
25 | 可以避开的封路事件,已避开 |
26 | 路线干预 |
27 | 终点干预 |
28 | 常走路线封路 |
41 | 已经避开的拥堵信息 |
61 | 路线有禁行无法避开 |
62 | 货车限高限重已避开 |
65 | 常走路线禁行 |
63 | 货车限行(仅货车生效) |
64 | 货车限行(仅货车生效) |
201 | 网络不畅,无法避开拥堵(限行开关关闭) |
202 | 网络不畅,无法避开拥堵、限行(限行开关打开) |
203 | 无网状态下的路线规划 |
204 | 有网状态下的路线规划 |
206 | ETC对账助手提示 |
207 | 武汉疫情出行提示 |
29 | 疫情检查站 |
30 | 道路解封提醒 |
81 | 高速路段节假日免费 |
84 | 今日不营业-无时间 |
85 | 今日不营业-有时间 |
83 | 还有一小时中途休息/打烊 |
82 | 店铺已打烊 |
205 | 长途规划提示用户支付宝可以办理ETC |
89 | 路线规划的小路和窄路提示 |
90 | 外地车进杭证提示 |
10001 | 暂时关闭
|
10004 | 开放时间调整
|
10006 | 门票售罄
|
10010 | 路况事件 |
20001 | 第三方终点 |
208 | 货车轴数计费 |
规划页云控动态信息获取
ArrayList<CloudShowInfo> com.autonavi.gbl.common.path.option.PathInfo.getCloudShowInfo()
说明:函数详情,请复制函数名称到在线API搜索
// 算路结果观察者\nIRouteResultObserver routeResultObserver = new IRouteResultObserver() {\n @Override\n public void onNewRoute(PathResultData pathResultData, ArrayList<PathInfo> pathInfoList, java.lang.Object externData) {\n \n /* 转线程前,这边需要特殊处理。对SDK回调回来的PathInfo对象需重新构造创建一遍 */\n ArrayList<PathInfo> paths = new ArrayList<>();\n for(int i=0;i<pathInfoList.size();i++){\n PathInfo paths =new PathInfo(pathInfoList.get(i));\n paths.add(pathInfo);\n }\n // 根据情况决定是否将后续处理流程转为其他线程处理,如果转线程,只需将下面示例中的HandleNewRoute函数放在指定线程执行即可\n HandleNewRoute(pathResultData, paths);\n }\n\n @Override\n public void onNewRouteError(PathResultData pathResultData, java.lang.Object externData) {\n //code ...\n }\n};\n\n/* UI 线程逻辑 */\nvoid HandleNewRoute(PathResultData pathResultData, ArrayList<PathInfo> paths)\n{\n PathsMgr.getInstance().setPathsCache(paths);\n \n // 获取路线条数\n long size = paths.size();\n \n for(int i=0; i < size; i++)\n {\n PathInfo pathInfo = paths.get(i);\n if (null != pathInfo && pathInfo.isValid())\n {\n ...\n \t//规划页云控动态信息获取\n\t\tArrayList<CloudShowInfo> cloudShowInfos = pathInfo.getCloudShowInfo(); \n \t//客户端由cloudShowInfos获取相关云控信息。\n \t//以场景图为例客户端获取限行云控信息,且根据云控业务类型tiptype组织显示相应提示语\n \t\t//cloudShowInfos[0].vecRestrictCloudControl[0].vecRestrictCloudControl.tipsControl.tipType\n \t...\n \t//客户端通过调用com.autonavi.gbl.layer.BizGuideRouteControl.updatePaths()触发图层内聚显示路线相关部分(见图层)\n ...\n }\n }\n \n // 若之后业务还需使用路线 通过getPathsCache获取\n // 若不在需当前路线时回收路线 destoryPathsCache() \n}\n\npublic class PathsMgr {\n public static final String TAG = "PathsMgr";\n private ArrayList<PathInfo> mPathsCache;\n \n private static class SinglonHolder {\n private static PathsMgr instance = new PathsMgr();\n }\n\n public static PathsMgr getInstance() {\n return SinglonHolder.instance;\n }\n\n // 在UI线程缓存路线结果\n public void setPathsCache(ArrayList<PathInfo> paths) {\n // 清除上一次老路线缓存\n destoryPathsCache()\n //无效的结果不需要cache\n if (paths == null || paths.size() <= 0) {\n return;\n }\n mPathsCache = paths;\n Logger.d(TAG,"setPathsCache:paths = {?}",paths.toString());\n }\n \n // 在UI线程获取路线缓存结果\n public ArrayList<PathInfo> getPathsCache() {\n Logger.d(TAG,"getPathsCache:paths = {?}",mPathsCache.toString());\n return mPathsCache;\n }\n\n // 不再使用当前路线时在UI线程调用,如退出路线规划页,结束真实导航\n public void destoryPathsCache() {\n if (mPathsCache == null || mPathsCache.size() <= 0) {\n return;\n }\n Iterator<PathInfo> it = mPathsCache.iterator();\n while(it.hasNext()){\n PathInfo pathInfo = it.next();\n pathInfo.delete();\n it.remove();\n }\n }\n}