{"version":"0.1.0","code":"0000","result":true,"message":"处理成功","errdetail":"","timestamp":1671516354990,"data":{"id":71712560,"title":"6.3.2.3图层避让(Poi Filter)","slug":"sourqv","format":"lake","bookId":26046811,"body":null,"body_draft":null,"body_html":"
图层中,只有点图元及点图层有对接并对外提供避让能力,其它图元没有。点图元对外提供了addPoiFilter和removePoiFilter两个接口,而图层提供enablePoiFilter接口来开启或关闭poi filter。如果开启了避让,图层的所有图元会自动调用addPoiFilter,这样所有图元都会去避让掉可避让的元素。反之,会自动调用removePoiFilter。
启动图层避让后,当前图层的所有图元的纹理所覆盖的面就不再显示任何避让元素。
其中避让元素包括:底图路名、POI名、路牌、第三方Label、主路线高亮路名、备选路线高亮路名等。
//开启或关闭Poi Filter,默认未开启\nvoid com.autonavi.gbl.map.layer.BaseLayer.enablePoiFilter(boolean enable)\n\n//对点图元添加避让框\nvoid com.autonavi.gbl.map.layer.PointLayerItem.addPoiFilter()\n\n//移除点图元避让框\nvoid com.autonavi.gbl.map.layer.PointLayerItem.removePoiFilter()
说明:函数详情,请复制函数名称到在线API搜索
import com.autonavi.gbl.layer.model.BizPointBusinessInfo;\nimport com.autonavi.gbl.map.MapView;\nimport com.autonavi.gbl.map.layer.BaseLayer;\nimport com.autonavi.gbl.map.layer.LayerItem;\nimport com.autonavi.gbl.map.layer.PointLayerItem;\nimport java.util.ArrayList;\n\npublic class PointLayerDemo extends BaseLayer {\n public PointLayerDemo(String name, MapView mapView) {\n super(name, mapView);\n if (mapView != null) {\n mapView.getLayerMgr().addLayer(this); //把图层添加到图层管理器中\n }\n }\n\n public void init() {\n MapView mapView = getMapView();\n if (mapView != null) {\n PrepareLayerStyleDemo.getInstance().init(mapView);\n setStyle(PrepareLayerStyleDemo.getInstance()); //设置图元样式回调\n addClickObserver(LayerClickObserverDemo.getInstance());\n setClickable(true);\n\n enablePoiFilter(true); //启用图元的避让功能\n }\n }\n\n public void unInit() {\n MapView mapView = getMapView();\n if (mapView != null) {\n setStyle(null);\n removeClickObserver(LayerClickObserverDemo.getInstance());\n enablePoiFilter(false);\n }\n }\n\n /**< 图层最后不再使用时,从图层管理器中删除,同时图层会被delete释放掉 */\n public void removeLayer() {\n MapView mapView = getMapView();\n if (mapView != null) {\n mapView.getLayerMgr().removeLayer(this);\n }\n }\n\n /**< 添加用于避让的图元 */\n public void updatePointInfo(ArrayList<BizPointBusinessInfo> pointList) {\n if (getMapView() == null || pointList.size() == 0) {\n return;\n }\n\n clearAllItems();\n ArrayList<LayerItem> items = new ArrayList<>();\n for (int i = 0; i < pointList.size(); i++) {\n PointLayerItem item = new PointLayerItem();\n if (item != null) {\n String id = pointList.get(i).id;\n if (id.isEmpty()) {\n id = String.valueOf(i);\n }\n\n item.setID(id); //id必须唯一\n item.setBusinessType(DemoConstant.BusinessTypePoint);\n item.setPriority(i);\n item.setPosition(pointList.get(i).mPos3D);\n\n items.add(item);\n }\n }\n\n addItems(items);\n }\n}\n
1、如果是手动调用AddPoiFilter添加避让的,在添加避让后,如果不再需要时须删除避让,否则那些被避让的就不会再显示出来。
2、默认通过enablePoiFilter的方式启用避让,无需关注item的避让添加和删除,内部已实现。
","body_lake":null,"pub_level":null,"status":"0","updated_at":"2022-04-06 07:03:43","deleted_at":null,"nameSpace":"mnlcaa/v610","browseCount":150,"collectCount":0,"estimateDate":7,"docStatus":0,"permissions":true,"overView":false}}