Skip to content

ExtrudePolygonLayer

ExtrudePolygonLayer 是PolygonLayer的 WebGL 三维拉伸图层,它会把 Polygon / MultiPolygon 数据按高度属性拉伸为三维体(建筑等),顶面和侧面分别使用独立的材质渲染。

它是Vector3DLayer的子类,继承了 Vector3DLayer 上所有的方法,并额外支持顶面/侧面独立材质与拉伸数据配置。

构造函数

js
import { ExtrudePolygonLayer } from '@maptalks/gl-layers';

const layer = new ExtrudePolygonLayer('extrude');

构造 options

ExtrudePolygonLayer 在 Vector3DLayer 的选项基础上追加以下配置:

配置名类型描述默认值
dataConfigObject拉伸数据配置(LitDataConfig),见下方默认值见下方
materialObject顶面 PBR 材质(LitMaterial),不设置时使用默认材质渲染
sideMaterialObject侧面材质,缺省时使用 material
cullFaceBoolean是否启用面剔除false
castShadowBoolean是否投射阴影true
depthMaskBoolean深度写入开关

默认 dataConfig

js
{
  altitudeProperty: 'height',       // 要素属性 height 作为拉伸高度
  minHeightProperty: 'min_height',  // 要素属性 min_height 作为最小高度
  defaultAltitude: 20,              // 无 height 属性时的默认拉伸高度(米)
  perPositionHeight: false
}

即:要素的 height 属性决定拉伸高度,min_height 决定底部高度,未设置时默认拉伸 20 米。

成员方法

updateMaterial(material)

更新顶面材质。

参数:

  • material Object 顶面 PBR 材质(LitMaterial),传 null 清除

返回:

  • ExtrudePolygonLayer this
updateSideMaterial(material)

更新侧面材质,传 null 时回退使用顶面材质。

返回:

  • ExtrudePolygonLayer this
updateDataConfig(dataConfig)

更新拉伸数据配置(如 altitudePropertydefaultAltitude 等)。

返回:

  • ExtrudePolygonLayer this

Symbol 样式

ExtrudePolygonLayer 支持的 symbol 属性:

属性说明默认值
polygonFill填充色[1, 1, 1, 1]
polygonOpacity填充透明度1
topPolygonFill顶面颜色[1, 1, 1, 1]
bottomPolygonFill底面颜色[1, 1, 1, 1]

对 Circle、Ellipse、Sector、Rectangle 等特殊几何,图层会自动计算最小外接矩形(OMBB)并转换为多边形后拉伸。

本文档已与 @maptalks/gl-layers 2026 源码核对(api-notes-vt-gl.md)