{"version":"0.1.0","code":"0000","result":true,"message":"处理成功","errdetail":"","timestamp":1671508884719,"data":{"id":71712400,"title":"7.10 周边推荐搜索","slug":"pah391","format":"lake","bookId":26046811,"body":null,"body_draft":null,"body_html":"
周边推荐搜索通过指定经纬度和范围,根据关键字进行搜索,目前支持的关键字有:加油站,中石化,中石油,ATM,维修站,厕所,壳牌,美孚,停车场,充电站,服务区,加气站。
周边推荐搜索只支持在线搜索,建议使用关键字搜索的RQBXY,此接口后续逐渐不维护。
com.autonavi.gbl.search.model.SearchAroundRecommendParam
Coord2DDouble com.autonavi.gbl.search.model.SearchAroundRecommendParam.user_loc
String com.autonavi.gbl.search.model.SearchAroundRecommendParam.category
关键字,用';'分隔,必填。目前支持的关键字有: 加油站,中石化,中石油,ATM,维修站,厕所,壳牌,美孚,停车场,充电站,服务区,加气站
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.IGSearchAroundRecommendObserver
搜索结果请见 com.autonavi.gbl.search.model.SearchAroundRecommendResult
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.aroundRecommendSearch(SearchAroundRecommendParam param, IGSearchAroundRecommendObserver observer, @SearchMode.SearchMode1 int mode, int taskid)
备注:taskid为搜索发起请求的唯一任务id,由客户端分配,用于标识发起请求,客户端可根据此id调用中断接口,中断搜索请求,详见中断请求描述。
void com.autonavi.gbl.search.observer.IGSearchAroundRecommendObserver.onGetAroundRecommendResult(int taskid, int euRet, SearchAroundRecommendResult pstResult)
备注1:发起请求为异步接口,结果通过pstResult返回,返回状态参见euRet。
备注2:请注意observer的生命周期,搜索完成或者手动取消之前,请确保观察者不被释放。
说明:函数详情,请复制函数名称到在线API搜索。
// 建议定义成static类型\nstatic class SearchAroundRecommendObserver implements IGSearchAroundRecommendObserver {\n @Override\n public void onGetAroundRecommendResult(int taskid, int euRet, SearchAroundRecommendResult stResult) {\n Log.i(TAG, "onGetAroundRecommendResult: ");\n Log.i(TAG, " taskid = " + taskid);\n Log.i(TAG, " euRet = " + euRet);\n if (stResult != null) {\n Log.i(TAG, " result = " + stResult.result);\n Log.i(TAG, " message = " + stResult.message);\n Log.i(TAG, " version = " + stResult.version);\n Log.i(TAG, " timestamp = " + stResult.timestamp);\n\n if (stResult.pois != null && stResult.categories.length > 0) {\n Log.i(TAG, " category = " + stResult.categories[0].category);\n if (stResult.categories[0].pois!=null && stResult.categories[0].pois.length>0)\n {\n \tLog.i(TAG, " id = " + stResult.categories[0].pois[0].id);\n \tLog.i(TAG, " name = " + stResult.categories[0].pois[0].name);\n }\n }\n }\n }\n}\n\n// 回调观察者,这边需要上层管理,不要每次发起搜索都new一个,定义成成员变量管理一个即可\nSearchAroundRecommendObserver searchAroundRecommendObserver = new SearchAroundRecommendObserver();
注意:观察者需要上层以内部类形式实现,建议定义成static类型,回调观察者的初始化需要上层管理,不要每次发起搜索都new一个,定义成成员变量管理一个即可。
public class SearchRequest\n{\n public void doAroundRecommendSearch()\n {\n // 1. 构建搜索参数\n SearchAroundRecommendParam param = new SearchAroundRecommendParam();\n param.user_loc = getCarLocation();\n param.category = "ATM";\n param.pagesize = 10;\n param.range = 5000;\n\n // 2. 生成唯一的任务id\n taskId = 1;\n\n // 发起周边推荐搜索\n int iret = SearchService.aroundRecommendSearch(param, searchAroundRecommendObserver, SEARCH_MODE_ONLINE_ADVANCED, taskId);\n }\n \n /**< 获取自车位当前经纬度 */\n private Coord2DDouble getCarLocation()\n {\n Coord2DDouble carPos; // 自车位所在2D经度、纬度\n \n MapService mapService = ServiceMgr.getBLService(SingleServiceID.MapSingleServiceID);\n MapView mapView = mapService.getMapView(MapEngineID.MapEngineIdMain);\n \n BizControlService bizControlService = ServiceMgr.getBLService(SingleServiceID.BizControlSingleServiceID);\n BizCarControl bizCarControl = bizControlService.getBizCarControl(mapView); // 获取车标类图层控制 com.autonavi.gbl.layer.BizCarControl\n CarLoc carLoc = bizCarControl.getCarPosition();\n \n if (carLoc.vecPathMatchInfo.size() > 0)\n {\n carPos.lon = vecPathMatchInfo.get(0).longitude;\n carPos.lat = vecPathMatchInfo.get(0).latitude;\n }\n \n return carPos;\n }\n}
taskId = 1;\nSearchService.abort(taskId);