{"version":"0.1.0","code":"0000","result":true,"message":"处理成功","errdetail":"","timestamp":1671508809168,"data":{"id":71711938,"title":"2.5.7 POI选点","slug":"pt7gid","format":"lake","bookId":26046811,"body":null,"body_draft":null,"body_html":"
POI选点是指选择屏幕一个点附近区域范围内的POI点。AutoSDK会回调HMI通知该POI点信息。
POI选点分为手势POI选点和HMI直接划定区域POI选点。
手势POI选点:HMI通过传入AutoSDK原始的touch事件(详细见手势识别),AutoSDK负责识别单击操作并反馈点击的是空白还是POI信息。
划定区域POI选点:HMI直接通过接口查询POI选点信息。
点击角美镇poi后,POI选点通知HMI显示如图:
无
手势选点对应手势输入接口详见手势识别,点击后响应回调接口如下:
点击到空白:void com.autonavi.gbl.map.observer.IMapViewObserver.onClickBlank(long engineId, float px, float py);
点击到POI点:void com.autonavi.gbl.map.observer.IMapViewObserver.onClickLabel(long engineId, ArrayList<MapLabelItem> pLabels);
boolean com.autonavi.gbl.map.OperatorBusiness.selectPoi(SelectPoiInfo selectPoiInfo, boolean isAsync, ISelectPoiObserver pObserver)
选中后回调:
void com.autonavi.gbl.map.observer.ISelectPoiObserver.onSelectPoiOut(long engineId, SelectOutInfo selectOutInfo);
说明:函数详情,请复制函数名称到在线API查询
手势POI选点注册观察者
mapView.addMapviewObserver(xxx); //地图视图观察者
划定区域POI选点:
//通过最后参数ISelectPoiObserver pObserver指定观察者\nvoid com.autonavi.gbl.map.observer.ISelectPoiObserver.onSelectPoiOut(long engineId, SelectOutInfo selectOutInfo);
回调示例:
void onClickLabel(long engineId, ArrayList<MapLabelItem> pLabels) {\n super.onClickLabel(engineId, pLabels);\n if (pLabels != null && pLabels.size() > 0) {\n MapLabelItem item = pLabels.get(0);\n\n if (item.type == 4) { //交通事件\n GTrafficEventDetailRequestParam param = new GTrafficEventDetailRequestParam();\n param.eventid = poiID.poiIDToEventID(item.poiid, 0);\n AosPresenter.getInstance().sendReqTrafficEventDetail(param);\n } else { //非交通事件\n //可通过item.poiid 获取详细POI信息\n }\n for (int i = 0; i < pLabels.size(); i++) {\n Coord2DDouble coord2DDouble = OperatorPosture.mapToLonLat(pLabels.get(i).pixel20X, pLabels.get(i).pixel20Y);\n BizPointBusinessInfo bizPointBusinessInfo = new BizCustomPointInfo();\n bizPointBusinessInfo.mPos3D.lon = coord2DDouble.lon;\n bizPointBusinessInfo.mPos3D.lat = coord2DDouble.lat;\n BizPresenter.getInstance().getBizSearchControl().updateSearchPoiLabel(bizPointBusinessInfo);\n mIBizControl = BizPresenter.getInstance().getBizSearchControl();\n typeLayerList.clear();\n typeLayerList.add(BizSearchType.BizSearchTypePoiLabel);\n }\n\n } else {//无相关信息\n \n }\n }
ISelectPoiObserver iSelectPoiObserver = new ISelectPoiObserver() {\n @Override\n public void onSelectPoiOut(long l, SelectOutInfo selectOutInfo) {\n\n ArrayList<MapPoi> poisList = selectOutInfo == null ? null : selectOutInfo.pois;\n int size = poisList == null ? 0 : poisList.size();\n\n if (size > 0) {\n StringBuilder sb = new StringBuilder();\n sb.append("选点数量:").append(size);\n\n for (MapPoi item : poisList) {\n sb.append("\\n选点name:").append(item.name);\n } \n }\n }\n };\n SelectPoiInfo poiInfo = new SelectPoiInfo();\n poiInfo.winx = 300;//屏幕坐标\n poiInfo.winy = 400;//屏幕坐标\n poiInfo.radius = 30;//30像素半径内\n MapManager.getInstance().selectPoi(poiInfo, true, iSelectPoiObserver);