new ObjectSymbol3DLayer(options)
三维模型符号图层,用于在三维场景中以三维几何体或 glTF 模型的形式渲染点要素,仅支持三维场景视图,不支持二维地图视图。
支持两种资源来源:
① 通过 resource.primitive 使用系统内置几何体,可选值:'sphere'(球体)| 'cylinder'(圆柱体)|
'cone'(圆锥体)| 'inverted-cone'(倒圆锥体)| 'diamond'(菱形体);
② 通过 resource.href 加载外部 glTF/glb 模型文件(URL 地址)。
通常与 PointSymbol3D 配合使用,作为其 symbolLayers 数组中的元素。
示例如下:
[1、使用 glTF 模型资源创建三维模型符号图层]
[2、使用系统内置几何体创建三维模型符号图层]
| Name | Type | Description | ||||||||||||||||||||||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
options |
Object |
构造参数
|
Examples
// ES5 引入方式
const { Color, Feature } = zondy
const { ObjectSymbol3DLayer, IconResource, ColorMaterial, PointSymbol3D } = zondy.symbol
const { Point } = zondy.geometry
const { GraphicsLayer } = zondy.layer
// ES6 引入方式
import { ObjectSymbol3DLayer, IconResource, ColorMaterial, Color, PointSymbol3D, Point, Feature, GraphicsLayer } from "@mapgis/webclient-common"
// 创建三维模型符号图层(加载外部 glTF 模型)
const objectSymbol3DLayer = new ObjectSymbol3DLayer({
// 指定 glTF 模型的网络地址
resource: new IconResource({
href: 'https://example.com/model.gltf'
}),
// 模型覆盖色(红色),alpha 可控制透明度
material: new ColorMaterial({
color: new Color(255, 0, 0, 1)
}),
// 模型整体缩放比例
scale: 10
})
// 创建三维点符号,将模型图层加入 symbolLayers
const symbol = new PointSymbol3D({
symbolLayers: [objectSymbol3DLayer]
})
// 构造点几何对象(经度、纬度、高程)
const point = new Point({
coordinates: [114, 30, 600]
})
// 构建要素对象
const feature = new Feature({
geometry: point,
symbol: symbol
})
// 创建图形图层并添加至地图
const layer = new GraphicsLayer({
graphics: []
})
map.add(layer)
// 将要素添加至图层
layer.add(feature)
// ES5 引入方式
const { Color, Feature } = zondy
const { ObjectSymbol3DLayer, IconResource, ColorMaterial, PointSymbol3D } = zondy.symbol
const { Point } = zondy.geometry
const { GraphicsLayer } = zondy.layer
// ES6 引入方式
import { ObjectSymbol3DLayer, IconResource, ColorMaterial, Color, PointSymbol3D, Point, Feature, GraphicsLayer } from "@mapgis/webclient-common"
// 创建三维模型符号图层(使用内置球体,红色填充)
const objectSymbol3DLayer = new ObjectSymbol3DLayer({
// 使用系统内置球体图元
resource: new IconResource({
primitive: 'sphere'
}),
// 几何体填充颜色(红色)
material: new ColorMaterial({
color: new Color(255, 0, 0, 1)
}),
// 球体沿 z 轴方向的高度(米)
height: 1000,
// 球体沿 x 轴方向的宽度(米)
width: 1000,
// 球体沿 y 轴方向的深度(米)
depth: 1000
})
// 创建三维点符号
const symbol = new PointSymbol3D({
symbolLayers: [objectSymbol3DLayer]
})
// 构造点几何对象(经度、纬度、高程)
const point = new Point({
coordinates: [114, 30, 600]
})
// 构建要素对象
const feature = new Feature({
geometry: point,
symbol: symbol
})
// 创建图形图层并添加至地图
const layer = new GraphicsLayer({
graphics: []
})
map.add(layer)
// 将要素添加至图层
layer.add(feature)
Extends
Members
-
anchorAnchorType
-
锚点对齐方式,即几何体/模型相对于要素坐标点的对齐位置。
可选值:'center'|'top'|'bottom'|'origin'|'relative'- Default Value: AnchorType.center
anchorPositionPoint
锚点的附加偏移量(相对于锚点位置的偏移),格式为 [dx, dy],单位与 lengthUnit 一致。
仅当 anchor 为 'relative' 时生效
- Default Value: new Point({ coordinates: [0, 0] })
castShadowsBoolean
是否投射阴影,为 true 时该图层参与场景阴影计算
- Default Value: true
depthNumber
几何体的深度(沿 y 轴方向的尺寸),单位由 lengthUnit 决定。仅当 resource 为系统内置几何体时有效,glTF 模型不使用此参数
- Default Value: 10
heightNumber
几何体的高度(沿 z 轴方向的尺寸),单位由 lengthUnit 决定。仅当 resource 为系统内置几何体时有效,glTF 模型不使用此参数
- Default Value: 10
idString
符号图层唯一标识
lengthUnitRadiusUnit
几何体尺寸参数(height、width、depth)的长度单位,仅当 resource 为系统内置几何体时生效
- Default Value: RadiusUnit.meters
materialColorMaterial
符号材质,目前支持 ColorMaterial(纯色材质)。
当使用 glTF 模型时,作为覆盖色叠加于模型上(可通过 alpha 控制透明度);
当使用系统内置几何体时,作为几何体的填充色
numberOfPointsNumber
定义圆曲线上点的数量,仅当resource类型为cylinder、cone、inverted-cone时生效
- Default Value: 128
resourceIconResource
三维体资源。设置 href 加载外部 glTF/glb 模型,设置 primitive 使用系统内置几何体。
支持的内置几何体:'sphere' | 'cylinder' | 'cone' | 'inverted-cone' | 'diamond'
scaleNumber
整体缩放系数,值为 1 时按原始大小显示,仅当加载外部 glTF/glb 模型时有效
- Default Value: 1
transformMatrixArray.<Number>
图层的变换矩阵,格式为16个元素的一维数组,表示一个4x4的齐次坐标变换矩阵
三维符号图层类型,固定为 Symbol3DLayerType.object
widthNumber
几何体的宽度(沿 x 轴方向的尺寸),单位由 lengthUnit 决定。仅当 resource 为系统内置几何体时有效,glTF 模型不使用此参数
- Default Value: 10
Methods
-
clone(){ObjectSymbol3DLayer}
base/symbol/symbol3DLayer/ObjectSymbol3DLayer.js, line 269 -
克隆当前图层,返回一个具有相同属性的新实例(深拷贝)。 新实例与原实例互不影响。
Returns:
Type Description ObjectSymbol3DLayer 克隆后的新 ObjectSymbol3DLayer 实例 -
toJSON(){Object}
base/symbol/symbol3DLayer/ObjectSymbol3DLayer.js, line 247 -
将当前实例序列化为普通 JSON 对象,可用于持久化存储或网络传输。 返回的对象可通过
ObjectSymbol3DLayer.fromJSON反序列化还原。Returns:
Type Description Object 包含图层所有属性的 JSON 对象 -
ObjectSymbol3DLayer.fromJSON(json){ObjectSymbol3DLayer}
base/symbol/symbol3DLayer/ObjectSymbol3DLayer.js, line 238 -
通过 JSON 数据构造并返回一个新的 ObjectSymbol3DLayer 实例(静态工厂方法)。 接收的 JSON 结构应与
ObjectSymbol3DLayer#toJSON的返回值一致。Name Type Description jsonObject 符号图层属性的 JSON 对象
Returns:
Type Description ObjectSymbol3DLayer 新的 ObjectSymbol3DLayer 实例