ObjectSymbol3DLayer

AMD: require(["geoscene/symbols/ObjectSymbol3DLayer"], (ObjectSymbol3DLayer) => { /* 代码 */ });
ESM: import ObjectSymbol3DLayer from "@geoscene/core/symbols/ObjectSymbol3DLayer";
类: geoscene/symbols/ObjectSymbol3DLayer
继承于: ObjectSymbol3DLayer Symbol3DLayer Accessor
起始版本: GeoScene API for JavaScript 4.22

ObjectSymbol3DLayer 用于在 SceneView 中使用具有 PointSymbol3D的体积 3D 形状(例如,球体或圆柱体)来渲染Point几何图形。 MapView不支持 3D 符号。 Polygon 要素也可以使用 ObjectSymbol3DLayers 进行渲染,但在这种情况下,对象符号图层必须包含在 PolygonSymbol3D 中,而不是 PolygonSymbol3D 中。

对象的形状在resource属性中设置,对象的颜色在material属性中设置。对象的大小始终以米为单位定义。可以直接在heightwidth, 和 depth属性中设置大小。对象颜色和大小也可以通过向使用此符号图层的任何Renderer添加大小和/或颜色可视变量来数据驱动。

ObjectSymbol3DLayers 必须添加到 PointSymbol3D 或 PolygonSymbol3D 符号的  symbolLayers  属性中。 多个符号图层可用于单个符号。 下图描绘了一个点 FeatureLayer,其要素使用包含基于圆柱体的 ObjectSymbol3DLayer的PointSymbol3D 进行符号化。

symbols-3d-objectssymbols-3d-objects

请参阅 Symbol3DLayer 和 Symbol3D 以阅读有关 3D 符号、符号图层及其相互关系的更多常规信息。

示例:
示例代码:
// symbol using a cylinder as a resource
const symbol = {
  type: "point-3d",  // 转换成 new PointSymbol3D()
  symbolLayers: [{
    type: "object",  // 转换成 new ObjectSymbol3DLayer()
    width: 5,  // diameter of the object from east to west in meters
    height: 20,  // height of the object in meters
    depth: 15,  // diameter of the object from north to south in meters
    resource: { primitive: "cylinder" },
    material: { color: "red" }
  }]
};
// symbol using a glTF 3D model as a resource
const symbol = {
  type: "point-3d",  // 转换成 new PointSymbol3D()
  symbolLayers: [{
    type: "object",  // 转换成 new ObjectSymbol3DLayer()
    resource: {
      href: "../3d-assets/model.gltf"
    },
    height: 3,
    material: {
      color: "red"
    }
  }
};

构造函数

new ObjectSymbol3DLayer(properties)
参数:
properties Object
optional

所有可传入构造函数的属性,请参见属性列表

属性列表

可以设置、检索或监听的属性。参见 使用属性
展示继承属性 隐藏继承属性
属性 类型 描述
String更多信息

符号相对于几何的定位。

更多信息ObjectSymbol3DLayer
Object更多信息

定义相对于 symbol layer resource 中心的anchor 。

更多信息ObjectSymbol3DLayer
Boolean更多信息

指示符号层几何是否在场景中投射阴影。

更多信息ObjectSymbol3DLayer
String更多信息

类名。

更多信息Accessor
Number更多信息

对象的深度或从北到南的直径(以米为单位)。

更多信息ObjectSymbol3DLayer
Number更多信息

符号在水平平面上的顺时针旋转(即,围绕 z 轴旋转)。

更多信息ObjectSymbol3DLayer
Number更多信息

对象的高度(以米为单位)。

更多信息ObjectSymbol3DLayer
Object更多信息

用于为对象着色的材质。

更多信息ObjectSymbol3DLayer
Object更多信息

用于可视化点的基元形状 (primitive) 或外部 3D 模型 (href) 。

更多信息ObjectSymbol3DLayer
Number更多信息

符号在横向垂直平面(即围绕 y 轴)中的旋转。

更多信息ObjectSymbol3DLayer
Number更多信息

符号在纵向垂直平面(即围绕 x 轴)中的旋转。

更多信息ObjectSymbol3DLayer
String更多信息

对象类型。

更多信息ObjectSymbol3DLayer
Number更多信息

对象的宽度或从东到西的直径(以米为单位)。

更多信息ObjectSymbol3DLayer

属性详细说明

anchor String

符号相对于几何的定位。默认行为 (origin) 取决于资源:

  • 对于sphere, cubediamond 基元,原点位于中心。
  • 对于cylinder, cone, inverted-conetetrahedron 基元,原点位于底部。
  • 对于href 资源,原点与 3D 模型的原点一致。

如果anchor 设置为 relative,锚点由 anchorPosition 定义为符号边界框的一小部分。

可选值:"center"|"top"|"bottom"|"origin"|"relative"

默认值:origin
anchorPosition Object
起始版本: GeoScene API for JavaScript 4.22

定义相对于 symbol layer resource 中心的anchor 。 它被指定为资源边界框维度的比率。例如, { x: 0, y: 0, z: 0 } 值表示中心,而 { x: -0.5, y: -0.5, z: -0.5 } 值将符号置于符号边界框的西南下角。

仅当 anchor 设置为 relative时,此属性才适用。

属性:
x Number

定义相对于边界框的 x 轴的位置的值。

y Number

定义相对于边界框的 y 轴的位置的值。

z Number

定义相对于边界框的 z 轴的位置的值。

示例代码:
symbolLayer.anchor = "relative";
symbolLayer.anchorPosition = { x: 0, y: 0, z: -0.5 }; // equivalent to `anchor: "bottom"`
symbolLayer.anchor = "relative";
symbolLayer.anchorPosition = { x: 1.5, y: 1, z: 0 }; // the anchor can be placed outside of the symbol's bounding box
castShadows Boolean
起始版本: GeoScene API for JavaScript 4.22

表示符号图层几何是否在场景中投射阴影。将此属性设置为 false 将禁用符号图层的阴影,即使在 SceneView.environment 中启用了直接阴影也是如此。

默认值:true
示例代码:
// disables shadow casting
symbolLayer.castShadows = false;
declaredClass Stringreadonly inherited
起始版本: GeoScene API for JavaScript 4.22

类名。类的名称声明格式为 geoscene.folder.className

depth Number

对象的深度或从北到南的直径(以米为单位)。如果为 undefined,则将计算深度以保持对象的原始比例。

默认值:10
示例代码:
// depth of the symbol in meters
symbolLayer.depth = 5000;
heading Number

符号在水平平面上的顺时针旋转(即,围绕 z 轴旋转)。旋转以度为单位指定,并且相对于 y 轴。

如果符号资源对齐,使其朝前的边指向 y 轴的方向(在 WGS84 或 WebMercator 坐标中,y 轴始终指向北方),则其朝上的一侧指向 z 轴的方向,其右侧指向 x 轴的方向(在 WGS84 或 WebMercator 坐标中,x 轴始终指向东方), 则此角度对应于符号的标题。

示例代码:
// heading of the symbol in degrees
symbolLayer.heading = 180;
height Number

对象的高度(以米为单位)。如果为 undefined, 则将计算高度以保持对象的原始比例。

默认值:10
示例代码:
// height of the symbol in meters
symbolLayer.height = 1000;
material Objectautocast

用于为对象着色的材质。 此属性定义对象的颜色。

属性:
color Color
optional
默认值:white
自动转换自 Object|Number[]|String

对象的填充颜色。如果对象具有纹理,则纹理将与颜色相乘。这可以是使用 rgb(a) 值数组、命名字符串、十六进制字符串或 hsl(a) 字符串、具有  r, g, b, 和a 属性的对象或 Color 对象自动转换的。

示例代码:
// CSS color string
symbolLayer.material = {
  color: "dodgerblue"
};
// HEX string
symbolLayer.material = {
  color: "#33cc33";
}
// array of RGBA values
symbolLayer.material = {
  color: [51, 204, 51, 0.3];
}
// object with rgba properties
symbolLayer.material = {
  color: {
    r: 51,
    g: 51,
    b: 204,
    a: 0.7
  }
};
resource Object

用于可视化点的基元形状 (primitive) 或外部 3D 模型 (href)。如果两个属性都存在,则优先 primitive 并忽略 href 。使用 href 属性时,外部 3D 模型必须以 glTF 格式存在。

属性:
primitive String
optional

使用内置形状。有关可能的值,请参阅下表。

描述
sphere s3d-object-sphere
cylinder s3d-object-cylinder
cube s3d-object-cube
cone s3d-object-cone
inverted-cone s3d-object-inverted-cone
diamond s3d-object-diamond
tetrahedron s3d-object-tetrahedron
href String
optional

glTF 格式的 3D 模型的 URL。 URL 应指向 glTF 文件(.gltf 或 .glb),该文件可以引用其他二进制文件 (.bin) 和图像文件(.jpg,.png)。请参阅有关 使用 3D 符号可视化点 的指南主题,了解如何使用自定义 3D 模型。

默认值:{ primitive: "sphere" }
示例:
roll Number
起始版本: GeoScene API for JavaScript 4.22

符号在横向垂直平面(即围绕 y 轴)中的旋转。旋转以度为单位指定,并且相对于 x 轴。在 0 度时,模型是水平的。正值提升模型的左侧部分并降低右侧部分。

如果符号资源对齐,使其朝前的边指向 y 轴的方向(在 WGS84 或 WebMercator 坐标中,y 轴始终指向北方),则其朝上的一侧指向 z 轴的方向,其右侧指向 x 轴的方向(在 WGS84 或 WebMercator 坐标中,x 轴始终指向东方), 则此角度对应于符号的滚动。

示例代码:
// roll of the symbol in degrees
symbolLayer.roll = 90;
tilt Number
起始版本: GeoScene API for JavaScript 4.22

符号在纵向垂直平面(即围绕 x 轴)中的旋转。旋转以度为单位指定,并且相对于 y 轴。在 0 度时,模型是水平的。正值点将抬起模型的前部并降低模型的背面。

如果符号资源对齐,使其朝前的边指向 y 轴的方向(在 WGS84 或 WebMercator 坐标中,y 轴始终指向北方),则其朝上的一侧指向 z 轴的方向,其右侧指向 x 轴的方向(在 WGS84 或 WebMercator 坐标中,x 轴始终指向东方), 则此角度对应于符号的倾斜度。

示例代码:
// tilt of the symbol in degrees
symbolLayer.tilt = 45;
type Stringreadonly

对象类型。

对于ObjectSymbol3DLayer,类型始终为 "object".

width Number

对象的宽度或从东到西的直径(以米为单位)。如果为 undefined,则将计算宽度以保持对象的原始比例。

默认值:10
示例代码:
// width of the symbol in meters
symbolLayer.width = 5000;

方法列表

展示继承方法 隐藏继承方法
属性 返回值类型 描述
ObjectSymbol3DLayer更多信息

创建符号层的深层克隆。

更多信息ObjectSymbol3DLayer
*更多信息

创建此类的新实例并使用从 GeoScene产品生成的 JSON 对象的值对其进行初始化。

更多信息Symbol3DLayer
Object更多信息

将此类的实例转换为其 GeoScene portal JSON 格式。

更多信息Symbol3DLayer

方法详细说明

创建符号层的深层克隆。

返回值:
类型 描述
ObjectSymbol3DLayer 返回调用此方法对象的深拷贝。
示例代码:
// Creates a deep clone of the graphic's first symbol layer
let symLyr = graphic.symbol.symbolLayers.getItemAt(0).clone();
fromJSON(json){*}static

创建此类的新实例,并使用从 GeoScene 产品生成的 JSON 对象的值对其进行初始化。传递给输入 json 参数的对象通常来自对 REST API 中的查询操作的响应,或者来自另一个 GeoScene产品的 toJSON() 方法。有关何时以及如何使用此函数的详细信息和示例,请参阅指南中的 使用 fromJSON() 主题。

参数:
json Object

实例的 json 表达式,以geoscene 格式显示。

返回值:
类型 描述
* 返回一个该类的新实例。
toJSON(){Object}inherited

将此类的实例转换为 GeoScene portal JSON 格式。 有关更多信息,请参阅 使用 fromJSON() 指南。

返回值:
类型 描述
Object 此类实例的 GeoScene portal JSON 格式。

Your browser is no longer supported. Please upgrade your browser for the best experience. See our browser deprecation post for more details.