{"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显示如图:

\"image.png\"


时序图

核心接口

手势POI选点

手势选点对应手势输入接口详见手势识别,点击后响应回调接口如下:


点击到空白: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);

划定区域POI选点

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


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