{"version":"0.1.0","code":"0000","result":true,"message":"处理成功","errdetail":"","timestamp":1671516320464,"data":{"id":71712911,"title":"5.3.3.5 当前引导Path设置","slug":"rtztnn","format":"lake","bookId":26046811,"body":null,"body_draft":null,"body_html":"

关键参数

com.autonavi.gbl.common.path.option.PathInfo

特别说明:只有【主辅路重算】才需要设置当前Path数据。

核心接口

设置当前引导Path

boolean com.autonavi.gbl.common.path.option.RouteOption.setNaviPath(PathInfo naviPath)

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

调用示例

int curPathIndex = 0;\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   curPathIndex = 0;\n   // 缓存路线  \n   PathsMgr.getInstance().setPathsCache(paths);\n}\n\nIPosSwitchParallelRoadObserver posSwitchParallelRoadObserver = new IPosSwitchParallelRoadObserver() {\n    @Override\n    public void onSwitchParallelRoadFinished() {\n        // 转UI线程\n        HandleSwitchParallelRoadFinished();\n    }\n};\n\n/* UI 线程逻辑 */\nvoid HandleSwitchParallelRoadFinished()\n{\n    // 监听平行路切换完成的回调\n    // routeOption 其它参数配置...\n    \n    ArrayList<PathInfo> paths = PathsMgr.getInstance().getPathsCache()\n    if (null != paths && 0 paths.size())\n    {\n        // 设置上一次路线进来\n        if (-1 < curPathIndex && curPathIndex < paths.size())\n        {\n            PathInfo pathInfo = paths.get(curPathIndex);\n            if (null != pathInfo && pathInfo.isValid())\n            {\n              routeOption.setNaviPath(paths.g)\n    \t      // 发起路线重算\n     \t\t  routeService.requestRoute(routeOption) \n            }  \n        }\t\n    }  \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}\n


","body_lake":null,"pub_level":null,"status":"0","updated_at":"2022-04-06 07:02:44","deleted_at":null,"nameSpace":"mnlcaa/v610","browseCount":81,"collectCount":0,"estimateDate":7,"docStatus":0,"permissions":true,"overView":false}}