{"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":"

简介

用户在特定场景下调用此接口,获取组合的美食、洗车和加油的结果。

注意:

目前仅支持美食,洗车这两个类型及其组合。


场景图

\"image.png\"

时序图

初始化 & 反初始化

关键参数

输入参数

场景组合搜索请求参数

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

仅离线


搜索任务id

taskid外部需自己保证全局唯一

场景组合搜索结果回调观察者

com.autonavi.gbl.search.observer.ISceneSearchObserver

搜索结果回调参数

搜索结果pstResult返回值

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);


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