@arcgis/core
Version:
ArcGIS Maps SDK for JavaScript: A complete 2D and 3D mapping and data visualization API
138 lines (136 loc) • 8.69 kB
TypeScript
import type Color from "../Color.js";
import type Collection from "../core/Collection.js";
import type Symbol from "./Symbol.js";
import type Symbol3DLayer from "./Symbol3DLayer.js";
import type StyleOrigin from "./support/StyleOrigin.js";
import type { SymbolProperties } from "./Symbol.js";
import type { Symbol3DLayerProperties } from "./Symbol3DLayer.js";
import type { ReadonlyArrayOrCollection } from "../core/Collection.js";
import type { StyleOriginProperties } from "./support/StyleOrigin.js";
export interface Symbol3DProperties extends SymbolProperties {
/**
* > [!WARNING]
* >
* > 3D symbols do not support colors on the symbol level. Colors may be set on individual symbol layer materials instead. Setting the color property on a 3D symbol will not have any effect. The color property is present for consistency with other symbol types.
*
* @example
* // CSS color string
* symbol.color = "dodgerblue";
* @example
* // HEX string
* symbol.color = "#33cc33";
* @example
* // array of RGBA values
* symbol.color = [51, 204, 51, 0.3];
* @example
* // object with rgba properties
* symbol.color = {
* r: 51,
* g: 51,
* b: 204,
* a: 0.7
* };
*/
color?: Color | null;
/**
* The origin of the style from which the symbol was originally referenced.
*
* A reference to the style origin can be either by styleName or by styleUrl (but not both). This information is part
* of the WebScene persistence model and may be used to understand where a symbol was originally sourced from. It
* does not affect actual appearance or rendering of the symbol.
*/
styleOrigin?: StyleOriginProperties | null;
/**
* A Collection of [Symbol3DLayer](https://developers.arcgis.com/javascript/latest/references/core/symbols/Symbol3DLayer/) objects used to visualize the graphic or feature.
*
* Individual symbol layers may be autocast as objects and specified using the `type` property.
*/
symbolLayers?: ReadonlyArrayOrCollection<Symbol3DLayerProperties>;
}
/**
* Symbol3D is the base class for all 3D symbols. It is used to render 2D
* [Point](https://developers.arcgis.com/javascript/latest/references/core/geometry/Point/), [Polyline](https://developers.arcgis.com/javascript/latest/references/core/geometry/Polyline/), and
* [Polygon](https://developers.arcgis.com/javascript/latest/references/core/geometry/Polygon/) features in a
* [FeatureLayer](https://developers.arcgis.com/javascript/latest/references/core/layers/FeatureLayer/) and 3D mesh features in a
* [SceneLayer](https://developers.arcgis.com/javascript/latest/references/core/layers/SceneLayer/). All 3D symbols must be used in a
* [SceneView](https://developers.arcgis.com/javascript/latest/references/core/views/SceneView/) instance; there is no support for 3D rendering
* in [MapViews](https://developers.arcgis.com/javascript/latest/references/core/views/MapView/).
*
* There are five types of 3D symbols. Four of them correspond with a different feature
* geometry type. The fifth, [LabelSymbol3D](https://developers.arcgis.com/javascript/latest/references/core/symbols/LabelSymbol3D/), may be applied to
* any geometry type. See the table below to learn about which symbol types are supported for
* each geometry type.
*
* Geometry type | Valid symbol types
* --------------|-------------------
* [Point](https://developers.arcgis.com/javascript/latest/references/core/geometry/Point/) | [PointSymbol3D](https://developers.arcgis.com/javascript/latest/references/core/symbols/PointSymbol3D/), [LabelSymbol3D](https://developers.arcgis.com/javascript/latest/references/core/symbols/LabelSymbol3D/)
* [Polyline](https://developers.arcgis.com/javascript/latest/references/core/geometry/Polyline/) | [LineSymbol3D](https://developers.arcgis.com/javascript/latest/references/core/symbols/LineSymbol3D/), [LabelSymbol3D](https://developers.arcgis.com/javascript/latest/references/core/symbols/LabelSymbol3D/)
* [Polygon](https://developers.arcgis.com/javascript/latest/references/core/geometry/Polygon/) | [PolygonSymbol3D](https://developers.arcgis.com/javascript/latest/references/core/symbols/PolygonSymbol3D/), [LabelSymbol3D](https://developers.arcgis.com/javascript/latest/references/core/symbols/LabelSymbol3D/)
* Mesh | [MeshSymbol3D](https://developers.arcgis.com/javascript/latest/references/core/symbols/MeshSymbol3D/), [LabelSymbol3D](https://developers.arcgis.com/javascript/latest/references/core/symbols/LabelSymbol3D/)
*
* All 3D symbols have a [symbolLayers](https://developers.arcgis.com/javascript/latest/references/core/symbols/Symbol3D/#symbolLayers) property, which is an array of
* [Symbol3DLayers](https://developers.arcgis.com/javascript/latest/references/core/symbols/Symbol3DLayer/) that define the appearance of the symbol.
* All symbols must have at least one [symbol layer](https://developers.arcgis.com/javascript/latest/references/core/symbols/Symbol3DLayer/)
* added to the [symbolLayers](https://developers.arcgis.com/javascript/latest/references/core/symbols/Symbol3D/#symbolLayers) property. The Symbol3D object is a container
* that holds multiple symbol layers that determine the appearance of the symbol.
* One layer may be an outline, another the fill, etc.
* The relationship of symbol layers to symbol is similar to the relationship
* of [operational layers](https://developers.arcgis.com/javascript/latest/references/core/Map/#layers) to a [Map](https://developers.arcgis.com/javascript/latest/references/core/Map/).
* There are various types of symbol layers
* that may be used based on the symbol type and geometry of the features. See
* [Symbol3DLayer](https://developers.arcgis.com/javascript/latest/references/core/symbols/Symbol3DLayer/) to learn more about symbol layers.
*
* @since 4.0
* @see [Symbol Builder](https://developers.arcgis.com/javascript/latest/symbol-builder/)
* @see [Renderer](https://developers.arcgis.com/javascript/latest/references/core/renderers/Renderer/)
* @see [Graphic](https://developers.arcgis.com/javascript/latest/references/core/Graphic/)
* @see [Symbol3DLayer](https://developers.arcgis.com/javascript/latest/references/core/symbols/Symbol3DLayer/)
* @see [Styles and data visualization](https://developers.arcgis.com/javascript/latest/visualization/)
* @see [ArcGIS blog - Working with icons, lines, and fill symbols](https://blogs.esri.com/esri/arcgis/2016/01/19/3d-visualization-working-with-icons-lines-and-fill-symbols/)
* @see [ArcGIS blog - Working with objects, paths, and extrusion](https://blogs.esri.com/esri/arcgis/2016/01/25/3d-visualization-working-with-objects-paths-and-extrusion/)
* @see [ArcGIS blog - Using attributes to represent real-world sizes of features](https://blogs.esri.com/esri/arcgis/2016/02/01/3d-visualization-using-attributes-to-represent-real-world-sizes-of-features/)
*/
export default abstract class Symbol3D extends Symbol {
/**
* > [!WARNING]
* >
* > 3D symbols do not support colors on the symbol level. Colors may be set on individual symbol layer materials instead. Setting the color property on a 3D symbol will not have any effect. The color property is present for consistency with other symbol types.
*
* @example
* // CSS color string
* symbol.color = "dodgerblue";
* @example
* // HEX string
* symbol.color = "#33cc33";
* @example
* // array of RGBA values
* symbol.color = [51, 204, 51, 0.3];
* @example
* // object with rgba properties
* symbol.color = {
* r: 51,
* g: 51,
* b: 204,
* a: 0.7
* };
*/
accessor color: Color | null;
/**
* The origin of the style from which the symbol was originally referenced.
*
* A reference to the style origin can be either by styleName or by styleUrl (but not both). This information is part
* of the WebScene persistence model and may be used to understand where a symbol was originally sourced from. It
* does not affect actual appearance or rendering of the symbol.
*/
get styleOrigin(): StyleOrigin | null | undefined;
set styleOrigin(value: StyleOriginProperties | null | undefined);
/**
* A Collection of [Symbol3DLayer](https://developers.arcgis.com/javascript/latest/references/core/symbols/Symbol3DLayer/) objects used to visualize the graphic or feature.
*
* Individual symbol layers may be autocast as objects and specified using the `type` property.
*/
get symbolLayers(): Collection<Symbol3DLayer>;
set symbolLayers(value: ReadonlyArrayOrCollection<Symbol3DLayerProperties>);
/** The symbol type. */
get type(): "point-3d" | "line-3d" | "polygon-3d" | "mesh-3d" | "label-3d";
}