{"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 | 仅离线 |
taskid外部需自己保证全局唯一
com.autonavi.gbl.search.observer.IGSearchNearestObserver
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);