地图上的元素按固定的层次自下而上叠加渲染,位于上层的元素会遮盖下层元素。了解渲染顺序,有助于理解“贴地的多边形被楼块挡住”“点标记压住地图 POI”这类显示效果。

自上而下,各层次包含的内容如下:
可视化图层默认绘制在瓦片图层之上、覆盖物之下。通过图层的 renderStage 属性,可以把它放到其他层次,例如让图标图层叠在 POI 文字之上。
renderStage 的值表示该图层排在此阶段之后绘制,即叠在该阶段之上。
// 面图层叠在楼块之上、POI 文字之下var polygonLayer = new BMap.PolygonLayer({ renderStage: 'building' });// 图标图层叠在 POI 文字之上var pointLayer = new BMap.PointLayer({ renderStage: 'poi' });// 运行时调整,传入 null 恢复默认pointLayer.setRenderStage('overlay');pointLayer.getRenderStage(); // 'overlay'pointLayer.setRenderStage(null);
取值不合法时,控制台会输出告警,并按默认值 'tilelayer' 处理。
Marker 始终在最上层,没有能压住 Marker 的取值。
同一取值内,其他类型图层先绘制,可视化图层后绘制;两类图层的 zIndex 不能互相比较,不能用 zIndex 调整它们之间的顺序。
通过 map.setDisplayOptions(options) 可以整体开关某一层的显示,常用于减少视觉干扰或排查遮挡问题。
map.setDisplayOptions({building: false, // 隐藏楼块,避免遮挡贴地绘制的覆盖物poiText: false // 只保留 POI 图标,不显示文字});
贴地绘制的多边形被建筑物遮挡:楼块位于覆盖物之上,可关闭 building 显示。
点标记总是压在地图 POI 和楼块之上:Marker 处于最上层,属于预期表现;如需减少干扰可关闭 POI 显示。
给可视化图层设置很大的 zIndex 仍然盖不住覆盖物:zIndex 只在同一层内生效,不能跨层调整。如需让可视化图层压在覆盖物之上,请设置 renderStage 为 'overlay'。
上一篇
下一篇