import type FeatureExpressionInfo from "./FeatureExpressionInfo.js"; import type { ClonableMixin } from "../../core/Clonable.js"; import type { JSONSupport } from "../../core/JSONSupport.js"; import type { ElevationUnit } from "../../core/units.js"; import type { ElevationInfoMode } from "./types.js"; import type { FeatureExpressionInfoProperties } from "./FeatureExpressionInfo.js"; export interface ElevationInfoProperties extends Partial, "offset" | "unit">> { /** Defines how to override an element's Z-value based on its attributes. */ featureExpressionInfo?: FeatureExpressionInfoProperties | null; /** * Defines how the element is placed with respect to the terrain surface or 3D objects in the scene. * If the geometry consists of multiple points (e.g. lines or polygons), the elevation is evaluated * separately for each point. See the table below for a list of possible values. * * ![elevation-info](https://developers.arcgis.com/javascript/latest/assets/references/core/layers/elevation-info.png) * * Mode | Description * ------|------------ * on-the-ground | Elements are aligned to the [Ground](https://developers.arcgis.com/javascript/latest/references/core/Ground/). If the scene contains an [IntegratedMeshLayer](https://developers.arcgis.com/javascript/latest/references/core/layers/IntegratedMeshLayer/) or [IntegratedMesh3DTilesLayer](https://developers.arcgis.com/javascript/latest/references/core/layers/IntegratedMesh3DTilesLayer/), then elements are aligned to the [IntegratedMeshLayer](https://developers.arcgis.com/javascript/latest/references/core/layers/IntegratedMeshLayer/) or [IntegratedMesh3DTilesLayer](https://developers.arcgis.com/javascript/latest/references/core/layers/IntegratedMesh3DTilesLayer/). If elements have z-values, then the z-values are ignored in this mode. Elements with 2D symbols are draped on the [Ground](https://developers.arcgis.com/javascript/latest/references/core/Ground/) or [IntegratedMeshLayer](https://developers.arcgis.com/javascript/latest/references/core/layers/IntegratedMeshLayer/) or [IntegratedMesh3DTilesLayer](https://developers.arcgis.com/javascript/latest/references/core/layers/IntegratedMesh3DTilesLayer/). This is the default mode for layers without z-values containing [Polyline](https://developers.arcgis.com/javascript/latest/references/core/geometry/Polyline/), [Polygon](https://developers.arcgis.com/javascript/latest/references/core/geometry/Polygon/) or [Point](https://developers.arcgis.com/javascript/latest/references/core/geometry/Point/) rendered with [ObjectSymbol3DLayer](https://developers.arcgis.com/javascript/latest/references/core/symbols/ObjectSymbol3DLayer/). * absolute-height | Elements are placed at an absolute elevation (z-value) above sea level. This z-value is determined by the geometry's z-value (if present). If `featureExpressionInfo` is defined, the result of the expression is used instead of the geometry's z-value. This mode doesn't take the elevation of the [Ground](https://developers.arcgis.com/javascript/latest/references/core/Ground/) or any other layers into account. This is the default value of elements with any geometry type where `hasZ = true`. * relative-to-ground | Elements are placed at an elevation relative to the [Ground](https://developers.arcgis.com/javascript/latest/references/core/Ground/) or [IntegratedMeshLayer](https://developers.arcgis.com/javascript/latest/references/core/layers/IntegratedMeshLayer/) or [IntegratedMesh3DTilesLayer](https://developers.arcgis.com/javascript/latest/references/core/layers/IntegratedMesh3DTilesLayer/). The element's elevation is determined by summing up the elevation of the [Ground](https://developers.arcgis.com/javascript/latest/references/core/Ground/) or [IntegratedMeshLayer](https://developers.arcgis.com/javascript/latest/references/core/layers/IntegratedMeshLayer/) or [IntegratedMesh3DTilesLayer](https://developers.arcgis.com/javascript/latest/references/core/layers/IntegratedMesh3DTilesLayer/) and the geometry's z-value (if present). If `featureExpressionInfo` is defined, the result of the expression is used instead of the geometry's z-value. If the geometries don't have z-values, `relative-to-ground` is the default value for [Point](https://developers.arcgis.com/javascript/latest/references/core/geometry/Point/) geometries rendered with [IconSymbol3DLayers](https://developers.arcgis.com/javascript/latest/references/core/symbols/IconSymbol3DLayer/). * relative-to-scene | Elements are aligned to [extruded polygons](https://developers.arcgis.com/javascript/latest/references/core/symbols/ExtrudeSymbol3DLayer/), [meshes](https://developers.arcgis.com/javascript/latest/references/core/symbols/MeshSymbol3D/), 3D Object [SceneLayers](https://developers.arcgis.com/javascript/latest/references/core/layers/SceneLayer/) or [BuildingSceneLayers](https://developers.arcgis.com/javascript/latest/references/core/layers/BuildingSceneLayer/), depending on which one has higher elevation. If the element is not directly above a building or any other element, it is aligned to the elevation of the [Ground](https://developers.arcgis.com/javascript/latest/references/core/Ground/) or the [IntegratedMeshLayer](https://developers.arcgis.com/javascript/latest/references/core/layers/IntegratedMeshLayer/) or [IntegratedMesh3DTilesLayer](https://developers.arcgis.com/javascript/latest/references/core/layers/IntegratedMesh3DTilesLayer/). If present, the geometry's z-value is added to the elevation. If `featureExpressionInfo` is defined, the result of the expression is used instead of the geometry's z-value. */ mode?: ElevationInfoMode; } /** * Specifies how elements like features, observers, targets or flow are placed on the vertical axis (z). This property may only be used * in a [SceneView](https://developers.arcgis.com/javascript/latest/references/core/views/SceneView/). See the [ElevationInfo sample](https://developers.arcgis.com/javascript/latest/sample-code/scene-elevationinfo/) * for an example of how this property may be used. * * > [!WARNING] * > * > If `elevationInfo` is not set, the elevation mode is picked on the fly for each feature: * > - Features with z-values default to `absolute-height`. * > - Features without z-values: * > - Polylines, polygons, and points drawn with `ObjectSymbol3DLayer` default to `on-the-ground`. * > - Points drawn with `IconSymbol3DLayer` default to `relative-to-ground`. * > * > Feature services do not persist `elevationInfo`, so elevation settings from publishing tools such as ArcGIS Pro are lost unless saved in a web scene. * * @since 4.34 */ export default class ElevationInfo extends ElevationInfoSuperclass { constructor(properties?: ElevationInfoProperties); /** Defines how to override an element's Z-value based on its attributes. */ get featureExpressionInfo(): FeatureExpressionInfo | null | undefined; set featureExpressionInfo(value: FeatureExpressionInfoProperties | null | undefined); /** * Defines how the element is placed with respect to the terrain surface or 3D objects in the scene. * If the geometry consists of multiple points (e.g. lines or polygons), the elevation is evaluated * separately for each point. See the table below for a list of possible values. * * ![elevation-info](https://developers.arcgis.com/javascript/latest/assets/references/core/layers/elevation-info.png) * * Mode | Description * ------|------------ * on-the-ground | Elements are aligned to the [Ground](https://developers.arcgis.com/javascript/latest/references/core/Ground/). If the scene contains an [IntegratedMeshLayer](https://developers.arcgis.com/javascript/latest/references/core/layers/IntegratedMeshLayer/) or [IntegratedMesh3DTilesLayer](https://developers.arcgis.com/javascript/latest/references/core/layers/IntegratedMesh3DTilesLayer/), then elements are aligned to the [IntegratedMeshLayer](https://developers.arcgis.com/javascript/latest/references/core/layers/IntegratedMeshLayer/) or [IntegratedMesh3DTilesLayer](https://developers.arcgis.com/javascript/latest/references/core/layers/IntegratedMesh3DTilesLayer/). If elements have z-values, then the z-values are ignored in this mode. Elements with 2D symbols are draped on the [Ground](https://developers.arcgis.com/javascript/latest/references/core/Ground/) or [IntegratedMeshLayer](https://developers.arcgis.com/javascript/latest/references/core/layers/IntegratedMeshLayer/) or [IntegratedMesh3DTilesLayer](https://developers.arcgis.com/javascript/latest/references/core/layers/IntegratedMesh3DTilesLayer/). This is the default mode for layers without z-values containing [Polyline](https://developers.arcgis.com/javascript/latest/references/core/geometry/Polyline/), [Polygon](https://developers.arcgis.com/javascript/latest/references/core/geometry/Polygon/) or [Point](https://developers.arcgis.com/javascript/latest/references/core/geometry/Point/) rendered with [ObjectSymbol3DLayer](https://developers.arcgis.com/javascript/latest/references/core/symbols/ObjectSymbol3DLayer/). * absolute-height | Elements are placed at an absolute elevation (z-value) above sea level. This z-value is determined by the geometry's z-value (if present). If `featureExpressionInfo` is defined, the result of the expression is used instead of the geometry's z-value. This mode doesn't take the elevation of the [Ground](https://developers.arcgis.com/javascript/latest/references/core/Ground/) or any other layers into account. This is the default value of elements with any geometry type where `hasZ = true`. * relative-to-ground | Elements are placed at an elevation relative to the [Ground](https://developers.arcgis.com/javascript/latest/references/core/Ground/) or [IntegratedMeshLayer](https://developers.arcgis.com/javascript/latest/references/core/layers/IntegratedMeshLayer/) or [IntegratedMesh3DTilesLayer](https://developers.arcgis.com/javascript/latest/references/core/layers/IntegratedMesh3DTilesLayer/). The element's elevation is determined by summing up the elevation of the [Ground](https://developers.arcgis.com/javascript/latest/references/core/Ground/) or [IntegratedMeshLayer](https://developers.arcgis.com/javascript/latest/references/core/layers/IntegratedMeshLayer/) or [IntegratedMesh3DTilesLayer](https://developers.arcgis.com/javascript/latest/references/core/layers/IntegratedMesh3DTilesLayer/) and the geometry's z-value (if present). If `featureExpressionInfo` is defined, the result of the expression is used instead of the geometry's z-value. If the geometries don't have z-values, `relative-to-ground` is the default value for [Point](https://developers.arcgis.com/javascript/latest/references/core/geometry/Point/) geometries rendered with [IconSymbol3DLayers](https://developers.arcgis.com/javascript/latest/references/core/symbols/IconSymbol3DLayer/). * relative-to-scene | Elements are aligned to [extruded polygons](https://developers.arcgis.com/javascript/latest/references/core/symbols/ExtrudeSymbol3DLayer/), [meshes](https://developers.arcgis.com/javascript/latest/references/core/symbols/MeshSymbol3D/), 3D Object [SceneLayers](https://developers.arcgis.com/javascript/latest/references/core/layers/SceneLayer/) or [BuildingSceneLayers](https://developers.arcgis.com/javascript/latest/references/core/layers/BuildingSceneLayer/), depending on which one has higher elevation. If the element is not directly above a building or any other element, it is aligned to the elevation of the [Ground](https://developers.arcgis.com/javascript/latest/references/core/Ground/) or the [IntegratedMeshLayer](https://developers.arcgis.com/javascript/latest/references/core/layers/IntegratedMeshLayer/) or [IntegratedMesh3DTilesLayer](https://developers.arcgis.com/javascript/latest/references/core/layers/IntegratedMesh3DTilesLayer/). If present, the geometry's z-value is added to the elevation. If `featureExpressionInfo` is defined, the result of the expression is used instead of the geometry's z-value. */ get mode(): Modes; set mode(value: ElevationInfoMode); /** * An elevation offset, which is added to the vertical position of the element. If `unit` is not defined, the offset * is in `meters`. * When `mode = "on-the-ground"`, this property has no effect. */ accessor offset: number | null | undefined; /** The unit for `featureExpressionInfo` and `offset` values. */ accessor unit: ElevationUnit | null | undefined; } declare const ElevationInfoSuperclass: typeof JSONSupport & typeof ClonableMixin