{"version":"0.1.0","code":"0000","result":true,"message":"处理成功","errdetail":"","timestamp":1671516353575,"data":{"id":71712531,"title":"6.3.2.1图层优先级","slug":"mzt3at","format":"lake","bookId":26046811,"body":null,"body_draft":null,"body_html":"
图层和图元都有优先级概念,通过优先级来设置两两之间的压盖和碰撞关系。
在图层中创建图元时,根据图层业务逻辑设置优先级,指定各图元的压盖关系;如果图层开启了碰撞逻辑,则根据图元优先级来确定碰撞关系,优先级高的图元碰撞掉优先级低的图元。
每个图层定义了默认的优先级,优先级包括:引擎层级优先级(定义图层绘制与其它元素绘制关系),以及图层之间的子优先级。
com.autonavi.gbl.map.layer.model.LayerPriority,设置图层与底图元素,图层之间的压盖关系
参数 | 类型 | 含义 | 配置项key名 |
drawlayerPrio | LayerDrawPriority | 图层与底图间优先级,值越大优先级越高 | "draw_priority" |
priority | int | 图层间优先级,值越大优先级越高 | "sub_priority" |
com.autonavi.gbl.map.layer.model.LayerDrawPriority,设置图层与底图元素之间的压盖关系
变量名 | 含义 | 值 |
LayerDrawPriorityBeforeBackGround | 背景绘制之前 | 0 |
LayerDrawPriorityAfterBackGround | 背景绘制之后 | 10 |
LayerDrawPriorityBeforeRoad | road绘制之前 | 20 |
LayerDrawPriorityAfterRoad | road绘制之后 | 40 |
LayerDrawPriorityBeforeBuilding | building绘制之前 | 60 |
LayerDrawPriorityAfterBuilding | building绘制之后 | 80 |
LayerDrawPriorityBeforeLabel | label绘制之前 | 100 |
LayerDrawPriorityAfterLabel | label绘制之后 | 120 |
LayerDrawPriorityRenderMapOver | 绘制地图之后 | 140 |
LayerDrawPriorityTop | 地图overlay的最上层 | 1000 |
LayerDrawPriorityWidget | 控件overlay | 0xFFFF |
//设置图层绘制层级以及显示优先级\nvoid com.autonavi.gbl.map.layer.BaseLayer.setPriority(LayerPriority priority)\n//获取图层绘制层级以及显示优先级\nLayerPriority com.autonavi.gbl.map.layer.BaseLayer.getPriority()
说明:函数详情,请复制函数名称到在线API搜索
BaseLayer mPointLayer = new BaseLayer("PointLayer", mapView);\nmPointLayer.setStyle(MapPrepareLayerStyle.getInstance());\nmapView.getLayerMgr().addLayer(mPointLayer);\nmPointLayer.setDisplayScale(new LayerScale(3.0f, 19.0f));\nmPointLayer.setPriority(new LayerPriority(LayerDrawPriority.LayerDrawPriorityAfterLabel, 3300)); //设置图层优先级\n\nPointLayerItem pointLayerItem = new PointLayerItem();\npointLayerItem.setID("id1");\nCoord3DDouble pos = new Coord3DDouble(116.397513, 39.908657, 0);\npointLayerItem.setPosition3D(pos);\npointLayerItem.setPriority(1); //设置图元优先级\npointLayerItem.setBusinessType(0x11110);\npointLayerItem.setVisible(true);\nmPointLayer.addItem(pointLayerItem);
1,如果没有指定优先级,图层图元的默认优先级是越后面添加优先级越高,也就是说越后面添加的图层图元会压盖前面添加的;