{"version":"0.1.0","code":"0000","result":true,"message":"处理成功","errdetail":"","timestamp":1671516331429,"data":{"id":71712775,"title":"5.3.6.2新能源相关数据透出","slug":"nctiux","format":"lake","bookId":26046811,"body":null,"body_draft":null,"body_html":"

场景图

接续算路新能源途经点

终点剩余电量

引导卡片显示自车位置到充电桩途经点距离和时间点

时序图

接续算路

图层业务服务初始化

充电桩途经点图层

核心接口

ArrayList<ChargeStationInfo> com.autonavi.gbl.common.path.option.PathInfo.getChargeStationInfo()

void com.autonavi.gbl.guide.observer.INaviObserver.onUpdateSAPA(ArrayList<NaviFacility> serviceAreaList)

void com.autonavi.gbl.guide.observer.INaviObserver.onUpdateNaviInfo(ArrayList<NaviInfo> naviInfoList)

void com.autonavi.gbl.guide.observer.INaviObserver.onUpdateChargeStationPass(long viaIndex)

void com.autonavi.gbl.guide.observer.INaviObserver.onUpdateElecVehicleETAInfo(ArrayList<ElecVehicleETAInfo> elecVehicleETAInfo)


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

调用示例

//接续算路,具体见《电动车_Range_on接续算路》\n// 算路结果观察者\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        //接续算路,充电桩途经点图层显示由图层内聚,图层显示的时候通过以下函数获取新能源电车途经点信息,具体见图层设置章节\n\t\t//算路后选当前路线\n        if (pathInfo.getPathID() == curPathId)\n        {\n           ArrayList< ChargeStationInfo >  chargeStationInfo = pathInfo.getChargeStationInfo ();\n        } \n        \n        //code ...\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}
INaviObserver naviObserver = new INaviObserver() {\n         @Override\n    \tpublic void onUpdateSAPA(ArrayList<NaviFacility> serviceAreaList){\n            if (serviceAreaList != null) {\n                int size = serviceAreaList.size();\n\t\t\t\tfor (int i=0; i<size; i++) {\n    \t\t\tNaviFacility facility = (NaviFacility)serviceAreaList.get(i); \n                float consume = facility.energyConsume;\n                //计算服务区剩余电量\n                ....\n\t\t\t\t}\n            } \n        }\n\n        @Override\n        public void onUpdateNaviInfo(ArrayList<NaviInfo> naviInfoList){\n            //引导卡片显示自车位置到充电桩途经点距离和时间点\n            if(null != naviInfoList && naviInfoList.size() > 0){\n                NaviInfo info = (NaviInfo)naviInfoList.get(0);\n                ArrayList< TimeAndDist > ChargeStationRemain = info.ChargeStationRemain;\n                int size = ChargeStationRemain.size();\n\t\t\t\tfor (int i=0; i<size; i++) {\n    \t\t\tTimeAndDist value = (TimeAndDist)ChargeStationRemain.get(i); \n                //自车位置到途经点距离\n                int dist = value.dist;\n                //自车位置到途经点时长\n                int time = value.time;\n                //自车位置到途径点时间点:当前时间+自车位置到途经点时长\n                ......             \n\t\t\t\t}\n            }\n        }\n    \n    \t@Override\n        public void onUpdateChargeStationPass(long viaIndex){\n            //图层删除途经点,具体见图层设置章节\n        }\n       \n        @Override\n        public void onUpdateElecVehicleETAInfo(ArrayList<ElecVehicleETAInfo> elecVehicleETAInfo){\n            //显示由图层内聚,具体见图层设置章节\n        }\n    };
","body_lake":null,"pub_level":null,"status":"0","updated_at":"2022-05-18 08:09:25","deleted_at":null,"nameSpace":"mnlcaa/v610","browseCount":140,"collectCount":0,"estimateDate":11,"docStatus":0,"permissions":true,"overView":false}}