{"version":"0.1.0","code":"0000","result":true,"message":"处理成功","errdetail":"","timestamp":1671508881582,"data":{"id":71712155,"title":"7.6 沿途批量深度信息搜索","slug":"wgvhh1","format":"lake","bookId":26046811,"body":null,"body_draft":null,"body_html":"
沿途批量深度信息搜索的前提条件,需要先进行沿途搜索,通过沿途搜索获取到需要查询深度信息的POIID列表。沿途批量深度信息搜索提升沿途搜查看信息时,对于深度信息的获取效率,协助用户更快完成出行决策。
沿途搜完成后,用户点击沿途路径上的POI图标发起沿途批量深度信息搜索,并将点击的POI的深度信息显示在左侧的卡片上。
com.autonavi.gbl.search.model.SearchLineDeepInfoParam
ArrayList<String> com.autonavi.gbl.search.model.SearchLineDeepInfoParam.poiIds
LineDeepQueryType1 int com.autonavi.gbl.search.model.SearchLineDeepInfoParam.queryType
目前该接口仅支持批量搜索服务区、充电站、加油站、终点停车场推荐4种类型。
com.autonavi.gbl.search.model.SearchMode.SearchMode1
取值 | 描述 | 备注 |
SEARCH_MODE_ONLINE_ADVANCED | 在线优先 | 当在线搜索出现异常,会自动转离线搜索 |
SEARCH_MODE_OFFLINE_ADVANCED | 离线优先 | 若当前网络是wifi,会切到在线优先方式 |
SEARCH_MODE_ONLINE_ONLY | 仅在线 |
taskid外部需自己保证全局唯一
com.autonavi.gbl.search.observer.IGSearchLineDeepInfoObserver
com.autonavi.gbl.search.model.SearchLineDeepInfoResult
信息如表格所示,更多返回信息可参考SearchLineDeepInfoResult结构的成员描述。
ArrayList<LinePoiBase> com.autonavi.gbl.search.model.SearchLineDeepInfoResult.data
com.autonavi.gbl.search.model.LinePoiBase
String com.autonavi.gbl.search.model.LinePoiChild.id
String com.autonavi.gbl.search.model.LinePoiChild.name
LineDeepQueryType1 int com.autonavi.gbl.search.model.LinePoiBase.queryType
跟据沿途批量深度搜索类型可以将LinePoiBase转为沿途批量深度搜索类型对应的子类,从而获取更多深度信息。queryType与LinePoiBase子类的对应关系如下图:
queryType | LinePoiBase子类 |
com.autonavi.gbl.search.model.LineDeepQueryType.eServiceArea | com.autonavi.gbl.search.model.LinePoiServiceAreaInfo |
com.autonavi.gbl.search.model.LineDeepQueryType.eCharing | com.autonavi.gbl.search.model.LinePoiChargeInfo |
com.autonavi.gbl.search.model.LineDeepQueryType.eGasStation | com.autonavi.gbl.search.model.LinePoiGasStationInfo |
com.autonavi.gbl.search.model.LineDeepQueryType.eParkRecommend | com.autonavi.gbl.search.model.LinePoiParkRecommendInfo |
int
euRet为通用的返回错误码,可详见:
com.autonavi.gbl.util.errorcode.common.Service,
com.autonavi.gbl.util.errorcode.common.ThirdParty,
com.autonavi.gbl.util.errorcode.search.Online,
com.autonavi.gbl.util.errorcode.search.Offline 类型。
int com.autonavi.gbl.search.SearchService.lineDeepInfoSearch(SearchLineDeepInfoParam param, IGSearchLineDeepInfoObserver observer, @SearchMode.SearchMode1 int mode, int taskid)
备注:taskid为搜索发起请求的唯一任务id,由客户端分配,用于标识发起请求,客户端可根据此id调用中断接口,中断搜索请求,详见中断请求描述。
void com.autonavi.gbl.search.observer.IGSearchLineDeepInfoObserver.onGetLineDeepInfoResult(int taskid, int euRet, SearchLineDeepInfoResult pstResult)
备注1:发起请求为异步接口,结果通过pstResult返回,返回状态参见euRet。
备注2:请注意observer的生命周期,搜索完成或者手动取消之前,请确保观察者不被释放。
说明:函数详情,请复制函数名称到在线API搜索。
// 建议定义成static类型\nstatic class SearchLineDeepInfoObserver implements IGSearchLineDeepInfoObserver {\n @Override\n public void onGetLineDeepInfoResult(int taskid, int euRet, SearchLineDeepInfoResult stResult) {\n Log.i(TAG, "onGetLineDeepInfoResult: ");\n Log.i(TAG, " taskid = " + taskid);\n Log.i(TAG, " euRet = " + euRet);\n if (stResult != null) {\n Log.i(TAG, " code = " + stResult.code);\n Log.i(TAG, " message = " + stResult.message);\n Log.i(TAG, " iPoiType = " + stResult.iPoiType);\n\n if (stResult.data != null && stResult.data.length > 0) {\n Log.i(TAG, " poiid = " + stResult.data[0].poiId);\n Log.i(TAG, " name = " + stResult.data[0].name);\n switch(stResult.data[0].queryType)\n {\n case LineDeepQueryType.eServiceArea:\n LinePoiServiceAreaInfo serviceAreaInfo = (LinePoiServiceAreaInfo)stResult.data[0];\n break;\n case LineDeepQueryType.eCharing:\n LinePoiChargeInfo chargeInfo = (LinePoiChargeInfo)stResult.data[0];\n break;\n case LineDeepQueryType.eGasStation:\n LinePoiGasStationInfo gasStationInfo = (LinePoiGasStationInfo)stResult.data[0];\n break;\n case LineDeepQueryType.eParkRecommend:\n LinePoiParkRecommendInfo parkRecommendInfo = (LinePoiParkRecommendInfo)stResult.data[0];\n break;\n default:\n Log.i(TAG, "数据返回异常");\t\n break;\n }\n }\n }\n }\n}\n\n// 回调观察者,这边需要上层管理,不要每次发起搜索都new一个,定义成成员变量管理一个即可\nSearchLineDeepInfoObserver searchLineDeepInfoObserver = new SearchLineDeepInfoObserver();
注意:观察者需要上层以内部类形式实现,建议定义成static类型,回调观察者的初始化需要上层管理,不要每次发起搜索都new一个,定义成成员变量管理一个即可。
public class SearchRequest\n{\n\tpublic void doLineDeepInfoSearch()\n {\n // 1. 构建搜索参数\n SearchLineDeepInfoParam param = new SearchLineDeepInfoParam();\n\t\tparam.poiIds = new ArrayList<String>(Arrays.asList("B061604JM3",\n "B01380Q30J",\n "B0FFG3ELL9",\n "B0FFIL85B5",\n "B0FFHJ6TSG",\n "B0FFIMQ8NO",\n "B0FFIMFST2",\n "B03190Q9L8",\n "B0FFL49MA4",\n "B0FFL41WSY"));\n param.queryType = LineDeepQueryType.eGasStation; // 加油站\n \n // 3. 生成唯一的任务id\n taskId = 1;\n \n // 发起沿途批量深度信息搜索\n int iret = SearchService.lineDeepInfoSearch(param, searchLineDeepInfoObserver, SEARCH_MODE_ONLINE_ADVANCED, taskId);\n }\n}
taskId = 1;\nSearchService.abort(taskId);