{"version":"0.1.0","code":"0000","result":true,"message":"处理成功","errdetail":"","timestamp":1671516338282,"data":{"id":71712062,"title":"5.4.3.5 引导路线光柱图","slug":"gdv1wy","format":"lake","bookId":26046811,"body":null,"body_draft":null,"body_html":"

场景图

光柱图能在导航中以颜色标注出前方路况,并随着车辆的行驶逐渐前进直至终点。设计简单明了,使用户对路况的显示一目了然。在线导航才有该功能。

\"image.png\"


时序图

AutoSDK提供光柱图相关的数据,绘制逻辑由客户端自行实现,类似于一个UI控件。这边对透出数据逻辑进行说明。

在导航/模拟导航时,根据所选择路线的路况和当前车位信息通过INaviObserver.onUpdateTMCLightBar透出给客户端。

关键参数

// 路况条信息\ncom.autonavi.gbl.guide.model.LightBarInfo\n{\n\tpublic ArrayList<LightBarItem> itemList; \t// 光柱结构信息列表\n\tpublic long pathID;\t\t\t\t\t\t// 该路况条对应的路线ID\n}\n\n// 光柱结构信息\ncom.autonavi.gbl.common.path.drive.model.LightBarItem\n{\n    public int status; // 交通状态 TrafficStatus\n    public int length; // 光柱bar长度, 单位: 米\n    public long timeOfSeconds; // 预计通过该拥堵段的总时长 单位秒\n    ...//其它字段光柱图不需要使用\n}\n\n// 交通状态\ncom.autonavi.gbl.common.path.drive.model.TrafficStatus\n{\n    public static final int TrafficStatusUnkonw = 0; \t// 未知状态\n    public static final int TrafficStatusOpen = 1; \t\t// 畅通\n    public static final int TrafficStatusSlow = 2;\t\t// 缓行\n    public static final int TrafficStatusJam = 3;\t\t// 拥堵\n    public static final int TrafficStatusCongested = 4;\t// 严重拥堵\n}

核心接口

void com.autonavi.gbl.guide.observer.INaviObserver.onUpdateTMCLightBar(ArrayList<LightBarInfo> lightBarInfo, LightBarDetail lightBarDetail, long passedIdx,boolean dataStatus)

说明:函数详情,请复制函数名称到在线API搜索。

调用示例

光柱图的更新,需要结合路线ID、路线总长度进行计算。绘制顺序按item从后往前绘制,具体见下面的示例代码。

INaviObserver naviObserver = new INaviObserver() {\n    @Override\n    public void onUpdateTMCLightBar(ArrayList<LightBarInfo> lightBarInfo, LightBarDetail lightBarDetail, long passedIdx, boolean dataStatus) {\n    \t//获取当前设置的主路线的pathID;curSelectPathIndex是当前引导的主路线索引,naviPath是引导路线对象,这里略。\n        PathInfo pathInfo = naviPath.getVecPaths().get(curSelectPathIndex);\n        if (null == pathInfo || !pathInfo.isValid())\n        {\n            return\n        }\n        \n    \tlong curPathId = pathInfo.getPathID();\n    \t// 获取路线总长度\n    \tlong allLength = pathInfo.getLength();\n    \t// 查找属于当前pathid的ItemList\n    \tArrayList<LightBarItem> curItemList = null;\n    \tfor (int i = 0; i < lightBarInfo.size(); i++) {\n    \t    if (curPathId == lightBarInfo.get(i).pathID) {\n    \t        curItemList = lightBarInfo.get(i).itemList;\n    \t        break;\n    \t    }\n    \t}\n    \t\n        /*\n        // 计算需要绘制的item列表,根据item的交通状态和长度,在UI控件从上往下(UI控件上的位置)绘制彩色控件\n        if (curItemList != null) {\n            for (int i = curItemList.size() - 1; i >= passedIdx; i--) {\n                // 计算该段item在UI中绘制的比例\n                double pixLen = (double)curItemList.get(i).length / (double)allLength;\n                int status = curItemList.get(i).status;\n                // todo: HMI 根据 pixLen 和 status 在UI控件绘制\n            }\n        }\n        */\n        \n        // 上述注释掉的代码,在<610版本需要HMI计算实现。\n        // >=610版本,AutoSDK已经计算好,在回调入参LightBarDetail中,HMI直接获取调用即可。\n    }\n}


","body_lake":null,"pub_level":null,"status":"0","updated_at":"2022-04-06 07:03:17","deleted_at":null,"nameSpace":"mnlcaa/v610","browseCount":156,"collectCount":0,"estimateDate":6,"docStatus":0,"permissions":true,"overView":false}}