{"version":"0.1.0","code":"0000","result":true,"message":"处理成功","errdetail":"","timestamp":1671516322586,"data":{"id":71712764,"title":"5.3.5.1 沿途服务区","slug":"cep5vn","format":"lake","bookId":26046811,"body":null,"body_draft":null,"body_html":"
注:本文描述导航前沿途服务区的获取,导航中沿途服务区的获取见高速服务区
long startPos
long maxAreaCount
获得路径上指定位置后剩余的服务区
ArrayList<RestAreaInfo> com.autonavi.gbl.common.path.option.PathInfo.getRestAreas(long startPos, long maxAreaCount)
说明:函数详情,请复制函数名称到在线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//获得路径上指定位置后剩余的服务区(从开始位置获取最多20个)\n\t\tArrayList<RestAreaInfo> restAreaInfos = pathInfo.getRestAreas(0, 20); \n \t// 调用基础图层能力,绘制到路线上,需要抛线程处理,具体见图层内容\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}
注:图层示例代码见《服务区扎标图层》
","body_lake":null,"pub_level":null,"status":"0","updated_at":"2022-04-06 07:02:49","deleted_at":null,"nameSpace":"mnlcaa/v610","browseCount":77,"collectCount":0,"estimateDate":7,"docStatus":0,"permissions":true,"overView":false}}