@arcgis/core
Version:
ArcGIS Maps SDK for JavaScript: A complete 2D and 3D mapping and data visualization API
107 lines (106 loc) • 6.98 kB
TypeScript
import type DirectLineMeasurementAnalysis from "../../../analysis/DirectLineMeasurementAnalysis.js";
import type AnalysisView3D from "./AnalysisView3D.js";
import type { AbortOptions } from "../../../core/promiseUtils.js";
import type { DirectLineMeasurementAnalysisResult, DirectLineMeasurementPlacementResult } from "./DirectLineMeasurement/types.js";
/**
* Represents the analysis view of a [DirectLineMeasurementAnalysis](https://developers.arcgis.com/javascript/latest/references/core/analysis/DirectLineMeasurementAnalysis/)
* after it has been added to [SceneView.analyses](https://developers.arcgis.com/javascript/latest/references/core/views/SceneView/#analyses).
*
* The DirectLineMeasurementAnalysisView3D is responsible for rendering a [DirectLineMeasurementAnalysis](https://developers.arcgis.com/javascript/latest/references/core/analysis/DirectLineMeasurementAnalysis/)
* using custom visualizations.
*
* It allows to create a new analysis interactively using the [place()](https://developers.arcgis.com/javascript/latest/references/core/views/3d/analysis/DirectLineMeasurementAnalysisView3D/#place) method, query the measured [result](https://developers.arcgis.com/javascript/latest/references/core/views/3d/analysis/DirectLineMeasurementAnalysisView3D/#result),
* or make an existing analysis editable by enabling the [interactive](https://developers.arcgis.com/javascript/latest/references/core/views/3d/analysis/DirectLineMeasurementAnalysisView3D/#interactive) property.
*
* The view for an analysis can be retrieved using [SceneView.whenAnalysisView()](https://developers.arcgis.com/javascript/latest/references/core/views/SceneView/#whenAnalysisView)
* similar to how layer views are retrieved for layers using [SceneView.whenLayerView()](https://developers.arcgis.com/javascript/latest/references/core/views/SceneView/#whenLayerView).
*
* ```js
* // retrieve analysis view for analysis
* const analysis = new DirectLineMeasurementAnalysis();
* view.analyses.add(analysis); // add to the scene view
* const analysisView = await view.whenAnalysisView(analysis);
* ```
*
* > [!WARNING]
* >
* > **Things to consider:**
* > Snapping is enabled by default. This can be temporarily disabled by holding the `CTRL` key.
* > Layer types currently supported for snapping are: [FeatureLayer](https://developers.arcgis.com/javascript/latest/references/core/layers/FeatureLayer/), [GraphicsLayer](https://developers.arcgis.com/javascript/latest/references/core/layers/GraphicsLayer/) (except Mesh geometries),
* > [GeoJSONLayer](https://developers.arcgis.com/javascript/latest/references/core/layers/GeoJSONLayer/), [WFSLayer](https://developers.arcgis.com/javascript/latest/references/core/layers/WFSLayer/), [CSVLayer](https://developers.arcgis.com/javascript/latest/references/core/layers/CSVLayer/),
* > [3D Object SceneLayer](https://developers.arcgis.com/javascript/latest/references/core/layers/SceneLayer/), and [BuildingSceneLayer](https://developers.arcgis.com/javascript/latest/references/core/layers/BuildingSceneLayer/).
*
* @see [DirectLineMeasurementAnalysis](https://developers.arcgis.com/javascript/latest/references/core/analysis/DirectLineMeasurementAnalysis/)
* @see [Direct Line Measurement 3D component](https://developers.arcgis.com/javascript/latest/references/map-components/components/arcgis-direct-line-measurement-3d/)
* @see [Sample - Analysis objects](https://developers.arcgis.com/javascript/latest/sample-code/analysis-objects/)
*/
export default abstract class DirectLineMeasurementAnalysisView3D extends AnalysisView3D {
/**
* The direct line measurement analysis object associated with the analysis view.
*
* @since 4.24
*/
get analysis(): DirectLineMeasurementAnalysis;
/**
* Enables interactivity for the associated [analysis](https://developers.arcgis.com/javascript/latest/references/core/views/3d/analysis/DirectLineMeasurementAnalysisView3D/#analysis). When set to `true`, manipulators will be displayed,
* allowing users to click and drag to edit the analysis if it has a valid
* [DirectLineMeasurementAnalysis.startPoint](https://developers.arcgis.com/javascript/latest/references/core/analysis/DirectLineMeasurementAnalysis/#startPoint) and
* [DirectLineMeasurementAnalysis.endPoint](https://developers.arcgis.com/javascript/latest/references/core/analysis/DirectLineMeasurementAnalysis/#endPoint).
*
* This property is automatically set to `true` when the analysis is assigned to a
* [Direct Line Measurement 3D component](https://developers.arcgis.com/javascript/latest/references/map-components/components/arcgis-direct-line-measurement-3d/).
*
* @default false
* @since 4.33
*/
accessor interactive: boolean;
/**
* Result of the direct line measurement. Results are calculated asynchronously and should be
* watched for changes.
*/
accessor result: DirectLineMeasurementAnalysisResult | null | undefined;
/**
* The analysis view type.
*
* @since 4.24
*/
get type(): "direct-line-measurement-view-3d";
/**
* When `true`, the analysis is visualized in the view.
*
* @since 4.24
*/
get visible(): boolean;
set visible(value: boolean | null | undefined);
/**
* Starts the interactive placement of a direct line measurement.
*
* If the analysis does not have a [DirectLineMeasurementAnalysis.startPoint](https://developers.arcgis.com/javascript/latest/references/core/analysis/DirectLineMeasurementAnalysis/#startPoint)
* and [DirectLineMeasurementAnalysis.endPoint](https://developers.arcgis.com/javascript/latest/references/core/analysis/DirectLineMeasurementAnalysis/#endPoint) yet, the method allows placing
* the start and end points interactively in the view. If the analysis already has a measurement, clicking in the view will remove it and
* start the placement of new start and end points.
*
* The placement operation will finish when the user presses the escape key.
* To stop the placing programmatically, pass an abort signal as an argument when calling the method.
*
* Calling this method sets [interactive](https://developers.arcgis.com/javascript/latest/references/core/views/3d/analysis/DirectLineMeasurementAnalysisView3D/#interactive) to `true`.
*
* @param options - An object specifying additional options.
* @returns A promise which resolves when the operation is completed successfully or rejected if it is canceled.
* @since 4.33
* @example
* 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();
*/
place(options?: AbortOptions | null | undefined): Promise<DirectLineMeasurementPlacementResult>;
}