UNPKG

@arcgis/core

Version:

ArcGIS Maps SDK for JavaScript: A complete 2D and 3D mapping and data visualization API

144 lines (142 loc) 7.74 kB
import type DimensionAnalysis from "../analysis/DimensionAnalysis.js"; import type DimensionSimpleStyle from "../analysis/DimensionSimpleStyle.js"; import type Extent from "../geometry/Extent.js"; import type SpatialReference from "../geometry/SpatialReference.js"; import type Layer from "./Layer.js"; import type { MultiOriginJSONSupportMixin } from "../core/MultiOriginJSONSupport.js"; import type { OperationalLayer, OperationalLayerProperties } from "./mixins/OperationalLayer.js"; import type { DimensionSimpleStyleProperties } from "../analysis/DimensionSimpleStyle.js"; import type { LayerProperties } from "./Layer.js"; export interface DimensionLayerProperties extends LayerProperties, OperationalLayerProperties, Partial<Pick<DimensionLayer, "source">> { /** * The style defines how the dimension objects of this layer are displayed. * * This is an alias for the [DimensionAnalysis.style](https://developers.arcgis.com/javascript/latest/references/core/analysis/DimensionAnalysis/#style) of the [source](https://developers.arcgis.com/javascript/latest/references/core/layers/DimensionLayer/#source). */ style?: (DimensionSimpleStyleProperties & { type: "simple" }); /** * The title of the layer used to identify it in places such as the [LayerList](https://developers.arcgis.com/javascript/latest/references/core/widgets/LayerList/) widget * or [Layer List](https://developers.arcgis.com/javascript/latest/references/map-components/components/arcgis-layer-list/) component. * * If a layer is loaded as part of a webscene, then the title of the layer as stored in the webscene will be used. */ title?: string | null; } /** * The dimension layer displays measurement annotations of lengths and distances in a 3D [SceneView](https://developers.arcgis.com/javascript/latest/references/core/views/SceneView/). * * It can be grouped with other layers, and when a [LayerList](https://developers.arcgis.com/javascript/latest/references/core/widgets/LayerList/) widget * or [Layer List](https://developers.arcgis.com/javascript/latest/references/map-components/components/arcgis-layer-list/) component is used, * the dimension layer appears in the list. It can be persisted in a [WebScene](https://developers.arcgis.com/javascript/latest/references/core/WebScene/). * * The dimensions can be created interactively or programmatically into a [DimensionAnalysis](https://developers.arcgis.com/javascript/latest/references/core/analysis/DimensionAnalysis/) * object, which then is set as the DimensionLayer's [source](https://developers.arcgis.com/javascript/latest/references/core/layers/DimensionLayer/#source). * * ```js * // create analysis with dimensions * const dimensionAnalysis = new DimensionAnalysis({ * dimensions: [ * new LengthDimension({ * startPoint: new Point({ }), * endPoint: new Point({ }) * }) * ] * }); * // add analysis to the layer and style it * const dimensionLayer = new DimensionLayer({ * source: dimensionAnalysis, * style: new DimensionSimpleStyle({ * color: "white" * }), * }); * * // add layer to scene view * view.map.add(dimensionLayer); * ``` * * Use the [DimensionLayerView](https://developers.arcgis.com/javascript/latest/references/core/views/layers/DimensionLayerView/) to retrieve the dimensioning results. * * ```js * // retrieve measured results from the layer view * const dimensionLayerView = await view.whenLayerView(dimensionLayer); * const results = dimensionLayerView.results; * ``` * * To start creating or editing length dimensions interactively, use the * [DimensionLayerView](https://developers.arcgis.com/javascript/latest/references/core/views/layers/DimensionLayerView/). * * ```js * // retrieve layer view for the layer * const dimensionLayerView = await view.whenLayerView(dimensionLayer); * * // allow existing length dimensions in the layer to be selected and edited * // select a dimensions by hovering and clicking on their offset manipulator * dimensionLayerView.interactive = true; * * const abortController = new AbortController(); * * try { * // start placing a new dimension interactively * await dimensionLayerView.place({ signal: abortController.signal }); * } catch (error) { * if (error.name === "AbortError") { * console.log("Placement operation was cancelled."); * } * } * * // cancel the placement operation at some later point * abortController.abort(); * ``` * * > [!WARNING] * > * > **Known Limitations** * > * > This layer is only supported in a 3D [SceneView](https://developers.arcgis.com/javascript/latest/references/core/views/SceneView/). * * @since 4.25 * @see [DimensionLayerView](https://developers.arcgis.com/javascript/latest/references/core/views/layers/DimensionLayerView/) * @see [DimensionAnalysis](https://developers.arcgis.com/javascript/latest/references/core/analysis/DimensionAnalysis/) * @see [LengthDimension](https://developers.arcgis.com/javascript/latest/references/core/analysis/LengthDimension/) * @see [DimensionSimpleStyle](https://developers.arcgis.com/javascript/latest/references/core/analysis/DimensionSimpleStyle/) * @see [DimensionAnalysisView3D](https://developers.arcgis.com/javascript/latest/references/core/views/3d/analysis/DimensionAnalysisView3D/) * @see [Sample - Length dimensioning](https://developers.arcgis.com/javascript/latest/sample-code/layers-dimension/) */ export default class DimensionLayer extends DimensionLayerSuperclass { /** @example const dimensionLayer = new DimensionLayer(); */ constructor(properties?: DimensionLayerProperties); /** * The full extent of the layer which contains all dimensions referenced by the layer. * * @example * // Once the layer loads, set the view's extent to the layer's full extent * layer.when(function(){ * view.extent = layer.fullExtent; * }); */ get fullExtent(): Extent | null | undefined; /** * The [DimensionAnalysis](https://developers.arcgis.com/javascript/latest/references/core/analysis/DimensionAnalysis/) associated with the layer that stores the dimension shapes. * Assigning a null value will create a new empty analysis. */ accessor source: DimensionAnalysis; /** The spatial reference of the layer. The spatial reference is derived from the [source](https://developers.arcgis.com/javascript/latest/references/core/layers/DimensionLayer/#source). */ get spatialReference(): SpatialReference; /** * The style defines how the dimension objects of this layer are displayed. * * This is an alias for the [DimensionAnalysis.style](https://developers.arcgis.com/javascript/latest/references/core/analysis/DimensionAnalysis/#style) of the [source](https://developers.arcgis.com/javascript/latest/references/core/layers/DimensionLayer/#source). */ get style(): DimensionSimpleStyle; set style(value: (DimensionSimpleStyleProperties & { type: "simple" })); /** * The title of the layer used to identify it in places such as the [LayerList](https://developers.arcgis.com/javascript/latest/references/core/widgets/LayerList/) widget * or [Layer List](https://developers.arcgis.com/javascript/latest/references/map-components/components/arcgis-layer-list/) component. * * If a layer is loaded as part of a webscene, then the title of the layer as stored in the webscene will be used. */ accessor title: string | null | undefined; /** The layer type provides a convenient way to check the type of the layer without the need to import specific layer modules. */ get type(): "dimension"; } declare const DimensionLayerSuperclass: typeof Layer & typeof MultiOriginJSONSupportMixin & typeof OperationalLayer