UNPKG

@arcgis/core

Version:

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

112 lines (110 loc) 4.55 kB
import type Analysis from "./Analysis.js"; import type Polyline from "../geometry/Polyline.js"; import type { SystemOrLengthUnit } from "../core/units.js"; import type { PolylineProperties } from "../geometry/Polyline.js"; import type { AnalysisProperties } from "./Analysis.js"; /** * Properties that can be used to construct a [DistanceMeasurementAnalysis](https://developers.arcgis.com/javascript/latest/references/core/analysis/DistanceMeasurementAnalysis/) instance. * * @since 5.0 */ export interface DistanceMeasurementAnalysisProperties extends AnalysisProperties, Partial<Pick<DistanceMeasurementAnalysis, "unit">> { /** * Polyline whose length is to be computed and displayed in the view. * * If the polyline has [z-values](https://developers.arcgis.com/javascript/latest/references/core/geometry/Polyline/#hasZ) then these will be treated * as absolute values. * * @since 5.0 */ geometry?: PolylineProperties | null; } /** * DistanceMeasurementAnalysis computes the length of a [Polyline](https://developers.arcgis.com/javascript/latest/references/core/geometry/Polyline/) in a 2D [MapView](https://developers.arcgis.com/javascript/latest/references/core/views/MapView/). * * To display a distance measurement, create an instance of a `DistanceMeasurementAnalysis`, * assign a [Polyline](https://developers.arcgis.com/javascript/latest/references/core/geometry/Polyline/) to the [geometry](https://developers.arcgis.com/javascript/latest/references/core/analysis/DistanceMeasurementAnalysis/#geometry) property, * and add it to [MapView.analyses](https://developers.arcgis.com/javascript/latest/references/core/views/MapView/#analyses) * * Use the [DistanceMeasurementAnalysisView2D](https://developers.arcgis.com/javascript/latest/references/core/views/2d/analysis/DistanceMeasurementAnalysisView2D/) to retrieve analysis results. * * ```js * // create analysis * const distanceMeasurement = new DistanceMeasurementAnalysis({ * geometry: new Polyline({ }) * }); * * // add to map view * view.analyses.add(distanceMeasurement); * * // retrieve measured results from analysis view once available * const analysisView = await view.whenAnalysisView(distanceMeasurement); * await reactiveUtils.whenOnce(() => analysisView.result); * * const result = analysisView.result; * ``` * * To draw a distance measurement interactively, use the * [DistanceMeasurementAnalysisView2D.place()](https://developers.arcgis.com/javascript/latest/references/core/views/2d/analysis/DistanceMeasurementAnalysisView2D/#place) method. * * ```js * const abortController = new AbortController(); * * try { * await analysisView.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 Limitation** * > * > This analysis is only supported in a 2D [MapView](https://developers.arcgis.com/javascript/latest/references/core/views/MapView/). * * @since 5.0 */ export default class DistanceMeasurementAnalysis extends Analysis { /** @since 5.0 */ constructor(properties?: DistanceMeasurementAnalysisProperties); /** * Polyline whose length is to be computed and displayed in the view. * * If the polyline has [z-values](https://developers.arcgis.com/javascript/latest/references/core/geometry/Polyline/#hasZ) then these will be treated * as absolute values. * * @since 5.0 */ get geometry(): Polyline | null | undefined; set geometry(value: PolylineProperties | null | undefined); /** * The type of analysis. For distance measurement analysis, this is always "distance-measurement". * * @since 5.0 */ get type(): "distance-measurement"; /** * Unit system (imperial, metric) or specific unit used for displaying the computed lengths in the view. * * @since 5.0 */ accessor unit: SystemOrLengthUnit | null | undefined; /** * Indicates whether the analysis is ready to be computed and interacted with in the view. It requires the * geometry to be a valid polyline whose first path contains at least 2 points. * * @since 5.0 */ get valid(): boolean; /** * Clears the analysis by resetting the [geometry](https://developers.arcgis.com/javascript/latest/references/core/analysis/DistanceMeasurementAnalysis/#geometry) property. * * @since 5.0 */ clear(): void; }