Skip to content

phong渲染插件

用phong材质渲染三维面数据的渲染插件。

配置说明

js
{
  renderPlugin: {
    // [必填] 固定为lit
    type: "phong",
    // [必填] 数据生成设置
    dataConfig: {
      // [必填],数据类型
      // 数据类型,可以是
      // 3d-extrusion: 提升二维面为三维面
      // line-extrusion: 提升二维线为三维线
      type: "3d-extrusion",
            // [可选] 默认为 null
      // 顶部高度的属性值,如果没有设置,则用默认高度
      altitudeProperty: "height",
      // [可选] 默认为 null
      // 底部高度的属性值,如果底部高度不为0,则三维体会悬空。如果没有设置,则底部高度默认为0。
      minHeightProperty: "min_height",
      // [可选] 默认为1,单位米
      // 高度缩放比例,例如altitudeProperty中如果存储的是楼层数,可以把altitudeScale设为层高,例如4米
      altitudeScale: 1,
      // [可选] 默认为0,单位米
      // 默认的高度。
      // 注:2026 源码 build3DExtrusion 中 defaultAltitude 缺省时为 0;
      // ExtrudePolygonLayer(矢量图层)的默认 dataConfig 中为 20。
      defaultAltitude: 0,
      // [可选] 默认为0,单位米
      // 顶部的厚度,如果不为0,顶部会变成有厚度的形式。
      topThickness: 0,
      // [可选] 默认为true
      // 是否构造顶部数据。
      top: true,
      // [可选] 默认为true
      // 是否构造侧面数据。
      side: true
    },
    // [可选] 场景渲染设置
    sceneConfig: {
            // [可选] 默认为 "one"
      // WebGL的blendEquation的src参数,可选的值有:
      // 0, 1, "src color", "one minus src color", "src alpha", "one minus dst color", "dst alpha",
      // "one minus dst alpha", "constant color", "one minus constant color", "constant alpha",
      // "one minus constant alpha", "src alpha saturate"
      blendSrc: "one",
      // [可选] 默认为 "one minus src alpha"
      // WebGL的blendEquation的dst参数,可选的值有:
      // 0, 1, "src color", "one minus src color", "src alpha", "one minus dst color", "dst alpha",
      // "one minus dst alpha", "constant color", "one minus constant color", "constant alpha",
      // "one minus constant alpha", "src alpha saturate"
      blendDst: "one minus src alpha",
      // [可选] 默认为[0, 1]
      // WebGL深度值范围
      depthRange: [0, 1],
      // 【可选],默认为null
      // feature-filter类型,符合条件的数据将不被渲染
      excludes: null
      // [可选] 默认为<=
      // WebGL深度测试函数,可选的值有 always, never, <, <=, !=, >, >=
      depthFunc: '<=',
      // [可选] String类型,默认为null
      // 三维面的进场动画,animation制定了动画的easing
      // 具体支持的easing种类可以参考: https://github.com/fuzhenn/animation-easings
      animation: null,
      // [可选] 默认为 800,单位ms
      // 动画持续时间
      animationDuration: 800
    }
  },
  filter: true,
  symbol: {
    visible: true,
    bloom: false,
    ssr: false,
    polygonOpacity: 1,
    material: {
      baseColorFactor: [1, 1, 1, 1],
      materialShininess: 32,
      specularStrength: 32
    }
  }
}

filter 数据过滤条件的具体说明请点击这里

支持的数据类型

动态样式

目前只有visible,polygonFill,polygonOpacity支持function-type 表达式,支持根据不同zoom级别或数据的属性值设置不同的样式属性。

例如以下示例,能让面的透明度在不同地图级别上由小变大:

json
{
 "polygonOpacity": {
    "stops": [[1, 0.1], [20, 1]]
  }
}

支持的Symbol样式属性


visible

默认值:true

Boolean,是否显示。


polygonFill

默认值:[1, 1, 1, 1]

String | Number[],基础颜色,可以为css颜色值或者归一化四位数组。


polygonOpacity

默认值:1

Number 透明度,取值范围 0 - 1。


bloom

默认值:false

Boolean,是否支持bloom泛光后处理。


material

默认值:null

Object,phong材质设置,具体属性可以参考材质说明文档

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