{"version":"0.1.0","code":"0000","result":true,"message":"处理成功","errdetail":"","timestamp":1671508882269,"data":{"id":71712409,"title":"7.7 逆地理信息搜索","slug":"vggg2y","format":"lake","bookId":26046811,"body":null,"body_draft":null,"body_html":"

简介

通过一个经纬度,搜索出该经纬度周边的逆地理信息,比如省市区名、城市代码、POI信息。

注:返回POI是高德服务对传入经纬度周边的POI推荐列表,所以POI对应的经纬度可能与传入的经纬度有误差,所以在线结果建议使用 desc 与 pos 信息,离线结果取首个POI的地址

场景图

在主图通过在图面任意拾取一点,如果拾取点是POI(参考主图-POI选点,可以通过poiid调用深度信息接口返回poi信息,如果拾取点是空白时,可以通过坐标经纬度调用逆地理编码接口,获取逆地理信息,如:道路和交叉路信息等

时序图

初始化 & 反初始化

关键参数

输入参数

逆地理信息查询请求参数

com.autonavi.gbl.search.model.SearchNearestParam

Coord2DDouble com.autonavi.gbl.search.model.SearchNearestParam.poi_loc

搜索模式

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.IGSearchNearestObserver

搜索结果回调参数

搜索结果pstResult返回值

com.autonavi.gbl.search.model.SearchNearestResult

pstResult关键信息如表格所示,更多返回信息可参考SearchNearestResult结构的成员描述。

int com.autonavi.gbl.search.model.SearchNearestResult.iTotal

ArrayList<NearestPoi> com.autonavi.gbl.search.model.SearchNearestResult.poi_list

String com.autonavi.gbl.search.model.NearestPoi.name

String com.autonavi.gbl.search.model.NearestPoi.address

int com.autonavi.gbl.search.model.NearestPoi.distance

以下返回字段仅在线请求时透出:

String com.autonavi.gbl.search.model.SearchNearestResult.province

int com.autonavi.gbl.search.model.SearchNearestResult.provinceadcode

String com.autonavi.gbl.search.model.SearchNearestResult.city

int com.autonavi.gbl.search.model.SearchNearestResult.cityadcode

int com.autonavi.gbl.search.model.SearchNearestResult.adcode

String com.autonavi.gbl.search.model.SearchNearestResult.areacode

String com.autonavi.gbl.search.model.SearchNearestResult.district

int com.autonavi.gbl.search.model.SearchNearestResult.districtadcode

String com.autonavi.gbl.search.model.SearchNearestResult.desc

String com.autonavi.gbl.search.model.SearchNearestResult.pos

ArrayList<NearestRoad> com.autonavi.gbl.search.model.SearchNearestResult.roadList

ArrayList<NearestCross> com.autonavi.gbl.search.model.SearchNearestResult.crossList

错误码类型

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.nearestSearch(SearchNearestParam  param, IGSearchNearestObserver observer, @SearchMode.SearchMode1 int mode, int taskid)

备注:taskid为搜索发起请求的唯一任务id,由客户端分配,用于标识发起请求,客户端可根据此id调用中断接口,中断搜索请求,详见中断请求描述。

void com.autonavi.gbl.search.observer.IGSearchNearestObserver.onGetNearestResult(int taskid, int euRet, SearchNearestResult pstResult)

备注1:发起请求为异步接口,结果通过pstResult返回,返回状态参见euRet。

备注2:请注意observer的生命周期,搜索完成或者手动取消之前,请确保观察者不被释放。


说明:函数详情,请复制函数名称到在线API搜索。

调用示例


// 建议定义成static类型\nstatic class SearchNearestObserver implements IGSearchNearestObserver {\n    @Override\n    public void onGetNearestResult(int taskid, int euRet, SearchNearestResult pstResult) {\n    \t//POI数据为0时本质上也是失败,本处建议BL增加错误类型处理\n        if (euRet == com.autonavi.gbl.util.errorcode.common.Service.ErrorCodeOK  && pstResult.poi_list.size() != 0) {\n            Logger.d(TAG, "nearestSearch pstResult.poi_list.size:" + pstResult.poi_list.size());\n            callbackWrapper.onSuccess(pstResult);\n        } else {\n            callbackWrapper.onFailure(euRet, "taskId=" + taskid + ",euRet=" + euRet);\n        }\n        callbackWrapper.onComplete();\n    }\n}\n\n// 回调观察者,这边需要上层管理,不要每次发起搜索都new一个,定义成成员变量管理一个即可\nSearchNearestObserver searchNearestObserver = new SearchNearestObserver();

注意:观察者需要上层以内部类形式实现,建议定义成static类型,回调观察者的初始化需要上层管理,不要每次发起搜索都new一个,定义成成员变量管理一个即可。

public class SearchRequest\n{\n    // 1. 构建搜索参数\n    SearchNearestParam param = new SearchNearestParam();\n    param.poi_loc.lat = 24.436341;\n    param.poi_loc.lon = 118.102555;\n    \n    // 2. 生成唯一的任务id\n    taskId = 1;\n    \n    // 发起逆地理信息搜索\n    int iret = SearchService.nearestSearch(param, searchNearestObserver, SEARCH_MODE_ONLINE_ADVANCED, taskId);\n    \n}
taskId = 1;\nSearchService.abort(taskId);


","body_lake":null,"pub_level":null,"status":"0","updated_at":"2022-12-09 09:43:16","deleted_at":null,"nameSpace":"mnlcaa/v610","browseCount":160,"collectCount":0,"estimateDate":9,"docStatus":0,"permissions":true,"overView":false}}