{"version":"0.1.0","code":"0000","result":true,"message":"处理成功","errdetail":"","timestamp":1671509004186,"data":{"id":71714064,"title":"18.4 场景组合搜索","slug":"wh4oaq","format":"lake","bookId":26046811,"body":null,"body_draft":null,"body_html":"
用户在特定场景下调用此接口,获取组合的美食、洗车和加油的结果。
注意:
目前仅支持美食,洗车这两个类型及其组合。
com.autonavi.gbl.search.model.SceneSearchParam
String com.autonavi.gbl.search.model.SceneSearchParam.keywords
Coord2DDouble com.autonavi.gbl.search.model.SceneSearchParam.userLoc
String com.autonavi.gbl.search.model.SceneSearchParam.userCity
String com.autonavi.gbl.search.model.SceneSearchParam.dataType
String com.autonavi.gbl.search.model.SceneSearchParam.uid
SearchPageParam com.autonavi.gbl.search.model.SceneSearchParam.pageParam
SearchClassifyParam com.autonavi.gbl.search.model.SceneSearchParam.classifyParam
com.autonavi.gbl.search.model.SearchMode.SearchMode1
取值 | 描述 | 备注 |
SEARCH_MODE_ONLINE_ADVANCED | 在线优先 | 当在线搜索出现异常,会自动转离线搜索 |
SEARCH_MODE_OFFLINE_ADVANCED | 离线优先 | 若当前网络是wifi,会切到在线优先方式 |
SEARCH_MODE_ONLINE_ONLY | 仅在线 | |
SEARCH_MODE_OFFLINE_ONLY | 仅离线 |
taskid外部需自己保证全局唯一
com.autonavi.gbl.search.observer.ISceneSearchObserver
pstResult关键信息如表格所示,更多返回信息可参考SceneSearchResult结构的成员描述。
ArrayList<SceneDataInfo> com.autonavi.gbl.search.model.SceneSearchResult.dataList
SceneLqiiInfo com.autonavi.gbl.search.model.SceneDataInfo.lqiiInfo
SearchClassifyInfo com.autonavi.gbl.search.model.SceneDataInfo.classifyInfo
ArrayList<ScenePoiInfo> com.autonavi.gbl.search.model.SceneDataInfo.poiList
String com.autonavi.gbl.search.model.ScenePoiInfo.itemType
ScenePoiBasicInfo com.autonavi.gbl.search.model.ScenePoiInfo.basicInfo
ScenePoiRankInfo com.autonavi.gbl.search.model.ScenePoiInfo.rankInfo
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.SearchServiceV2.sceneSearch(SceneSearchParam param, ISceneSearchObserver observer, @SearchMode.SearchMode1 int mode, int taskid)
备注:taskid为搜索发起请求的唯一任务id,由客户端分配,用于标识发起请求,客户端可根据此id调用中断接口,中断搜索请求,详见中断请求描述。
void com.autonavi.gbl.search.observer.ISceneSearchObserver.onGetSceneResult(int taskid, int euRet, SceneSearchResult pstResult)
备注1:发起请求为异步接口,结果通过pstResult返回,返回状态参见euRet。
备注2:请注意observer的生命周期,搜索完成或者手动取消之前,请确保观察者不被释放。
说明:函数详情,请复制函数名称到在线API搜索。
public SceneSearchObserver implements ISceneSearchObserver {\n @Override\n public void onGetSceneResult(int taskid, int euRet, SceneSearchResult stResult) {\n Log.i(TAG, "onGetSceneResult: ");\n Log.i(TAG, " taskid = " + taskid);\n Log.i(TAG, " euRet = " + euRet);\n if (stResult != null) {\n Log.i(TAG, " poiType = " + stResult.poiType);\n Log.i(TAG, " code = " + stResult.code);\n Log.i(TAG, " message = " + stResult.message);\n\n if (stResult.dataList != null && stResult.dataList.length > 0) {\n Log.i(TAG, " total = " + stResult.dataList[0].total);\n }\n\n }\n }\n};
public class SearchRequest\n{\n\tpublic void doSceneSearch()\n {\n // 1.确定搜索中心\n Coord2DDouble poiLoc;\n poiLoc = getMapCenter(); // 获取地图中心坐标\n\t\tMapDataService mapDataService = ServiceMgr.getBLService(MapDataSingleServiceID); // 获取地图数据服务,com.autonavi.gbl.data.MapDataService\n adCode = mapDataService.getAdcodeByLonLat(poiLoc.lon, poiLoc.lat);\n \n // 2. 构建搜索参数\n SceneSearchParam param;\n param.keywords = "北京大学"; // 替换为输入框输入的搜索关键字\n param.userLoc = getCarLocation();\n param.userCity = adCode;\n param.pageParam.pageSize = 10;\n \n\t\t// 3. 构建回调观察者\n SceneSearchObserver sceneSearchObserver = new SceneSearchObserver();\n \n // 4. 生成唯一的任务id\n taskId = 1;\n \n // 发起预搜索\n\t\tint iret = SearchServiceV2.sceneSearch(param, sceneSearchObserver, SEARCH_MODE_ONLINE_ADVANCED, taskId);\n }\n \n\t// 获取自车位当前经纬度\n private Coord2DDouble getCarLocation()\n {\n Coord2DDouble carPos; // 自车位所在2D经度、纬度\n BizCarControl bizCarControl = getBizCarControl(); // 获取车标类图层控制 com.autonavi.gbl.layer.BizCarControl\n CarLoc carLoc = bizCarControl.getCarPosition();\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 \n // 获取地图中心点坐标\n private Coord2DDouble getMapCenter()\n {\n Coord3DDouble mapCenter3D;\n Coord2DDouble mapCenter;\n \n OperatorPosture operatorPosture = getOperatorPosture(); // 获取地图姿态操作接口, com.autonavi.gbl.map.OperatorPosture\n mapCenter3D = operatorPosture.getMapCenterByLonLat();\n \n mapCenter.lon = mapCenter3D.lon;\n mapCenter.lat = mapCenter3D.lat;\n \n return mapCenter;\n }\n}
taskId = 1;\nSearchServiceV2.abort(taskId);