import type AreaMeasurementAnalysis from "../../analysis/AreaMeasurementAnalysis.js"; import type Accessor from "../../core/Accessor.js"; import type SceneView from "../../views/SceneView.js"; import type { SystemOrAreaUnit } from "../../core/units.js"; import type { MeasurementMode } from "../../views/analysis/types.js"; import type { AreaMeasurementAnalysisProperties } from "../../analysis/AreaMeasurementAnalysis.js"; /** @deprecated since version 4.33. Use the [AreaMeasurementAnalysis](https://developers.arcgis.com/javascript/latest/references/core/analysis/AreaMeasurementAnalysis/) or [Area Measurement 3D component](https://developers.arcgis.com/javascript/latest/references/map-components/components/arcgis-area-measurement-3d/) instead. For information on widget deprecation, read about [Esri's move to web components](https://developers.arcgis.com/javascript/latest/components-transition-plan/). */ export interface AreaMeasurement3DViewModelProperties extends Partial> { /** * The area measurement analysis object being created or modified by the view model. * * If no analysis is provided, the view model automatically creates its own analysis and adds it to the view. In * this case, the analysis will also be automatically removed from the view when the view model is destroyed. * * @since 4.23 * @example * // Construct an area measurement analysis object outside of the view model * const analysis = new AreaMeasurementAnalysis({ * geometry: { * type: "polygon", // autocasts as new Polygon() * rings: [ * [-73.9817, 40.7681], * [-73.9582, 40.8005], * [-73.9495, 40.7968], * [-73.9730, 40.7644], * [-73.9817, 40.7681] * ] * } * }); * * // Ensure that the analysis is added to the view * view.analyses.add(analysis); * * // Frame the analysis in the view * view.goTo(analysis.extent); * * // Pass the analysis object as a constructor parameter to modify it using the view model * const viewModel = new AreaMeasurement3DViewModel({ * analysis: analysis, * view: view * }); */ analysis?: AreaMeasurementAnalysisProperties; /** * Unit system (imperial, metric) or specific unit used for displaying the area values. * Possible values are listed in [unitOptions](https://developers.arcgis.com/javascript/latest/references/core/widgets/AreaMeasurement3D/AreaMeasurement3DViewModel/#unitOptions). */ unit?: SystemOrAreaUnit | null; /** * List of available units and unit systems (imperial, metric) for displaying the area values. * By default, the following units are included: `metric`, `imperial`, `square-inches`, `square-feet`, `square-us-feet`, `square-yards`, `square-miles`, `square-meters`, `square-kilometers`, `acres`, `ares`, `hectares`. * Possible [unit](https://developers.arcgis.com/javascript/latest/references/core/widgets/AreaMeasurement3D/AreaMeasurement3DViewModel/#unit) values can only be a subset of this list. */ unitOptions?: SystemOrAreaUnit[] | null; } /** * Provides the logic for the [AreaMeasurement3D](https://developers.arcgis.com/javascript/latest/references/core/widgets/AreaMeasurement3D/) widget and [component](https://developers.arcgis.com/javascript/latest/references/map-components/components/arcgis-area-measurement-3d/). * * @deprecated since version 4.33. Use the [AreaMeasurementAnalysis](https://developers.arcgis.com/javascript/latest/references/core/analysis/AreaMeasurementAnalysis/) or [Area Measurement 3D component](https://developers.arcgis.com/javascript/latest/references/map-components/components/arcgis-area-measurement-3d/) instead. For information on widget deprecation, read about [Esri's move to web components](https://developers.arcgis.com/javascript/latest/components-transition-plan/). * @since 4.7 * @see [AreaMeasurement3D](https://developers.arcgis.com/javascript/latest/references/core/widgets/AreaMeasurement3D/) widget - _Deprecated since 4.33. Use the [Area Measurement 3D component](https://developers.arcgis.com/javascript/latest/references/map-components/components/arcgis-area-measurement-3d/) instead._ * @see [Programming patterns: Widget viewModel pattern](https://developers.arcgis.com/javascript/latest/programming-patterns/#widget-viewmodel-pattern) */ export default class AreaMeasurement3DViewModel extends Accessor { constructor(properties?: AreaMeasurement3DViewModelProperties); /** * The area measurement analysis object being created or modified by the view model. * * If no analysis is provided, the view model automatically creates its own analysis and adds it to the view. In * this case, the analysis will also be automatically removed from the view when the view model is destroyed. * * @since 4.23 * @example * // Construct an area measurement analysis object outside of the view model * const analysis = new AreaMeasurementAnalysis({ * geometry: { * type: "polygon", // autocasts as new Polygon() * rings: [ * [-73.9817, 40.7681], * [-73.9582, 40.8005], * [-73.9495, 40.7968], * [-73.9730, 40.7644], * [-73.9817, 40.7681] * ] * } * }); * * // Ensure that the analysis is added to the view * view.analyses.add(analysis); * * // Frame the analysis in the view * view.goTo(analysis.extent); * * // Pass the analysis object as a constructor parameter to modify it using the view model * const viewModel = new AreaMeasurement3DViewModel({ * analysis: analysis, * view: view * }); */ get analysis(): AreaMeasurementAnalysis; set analysis(value: AreaMeasurementAnalysisProperties); /** The current measurement of the area. */ get measurement(): Measurement | null; /** * The view model's state. * * Value | Description * ------------|------------- * disabled | not ready yet * ready | ready for measuring * measuring | currently measuring * measured | measuring has finished * * @default "disabled" */ get state(): "disabled" | "ready" | "measuring" | "measured"; /** * Unit system (imperial, metric) or specific unit used for displaying the area values. * Possible values are listed in [unitOptions](https://developers.arcgis.com/javascript/latest/references/core/widgets/AreaMeasurement3D/AreaMeasurement3DViewModel/#unitOptions). */ get unit(): SystemOrAreaUnit; set unit(value: SystemOrAreaUnit | null | undefined); /** * List of available units and unit systems (imperial, metric) for displaying the area values. * By default, the following units are included: `metric`, `imperial`, `square-inches`, `square-feet`, `square-us-feet`, `square-yards`, `square-miles`, `square-meters`, `square-kilometers`, `acres`, `ares`, `hectares`. * Possible [unit](https://developers.arcgis.com/javascript/latest/references/core/widgets/AreaMeasurement3D/AreaMeasurement3DViewModel/#unit) values can only be a subset of this list. */ get unitOptions(): SystemOrAreaUnit[]; set unitOptions(value: SystemOrAreaUnit[] | null | undefined); /** The view from which the widget will operate. */ view?: SceneView | null; /** * Clears the current measurement. * * @since 4.16 */ clear(): void; /** * Starts a new measurement. * * @since 4.16 * @example * const areaMeasurement3DViewModel = new AreaMeasurement3DViewModel({ * view: view, * unit: "square-meters" * }); * * await areaMeasurement3DViewModel.start(); */ start(): Promise; } /** * Measurement value. * * @deprecated since version 4.33. Use the [AreaMeasurementAnalysis](https://developers.arcgis.com/javascript/latest/references/core/analysis/AreaMeasurementAnalysis/) or [Area Measurement 3D component](https://developers.arcgis.com/javascript/latest/references/map-components/components/arcgis-area-measurement-3d/) instead. For information on widget deprecation, read about [Esri's move to web components](https://developers.arcgis.com/javascript/latest/components-transition-plan/). */ export interface MeasurementValue { /** Text representation of the value to be displayed in the widget or null, if it should not be displayed. */ readonly text: string | null; /** * State of the measurement value controlling how the value is displayed in the widget. * * Value | Description * ------------|------------- * available | measured value is available * unavailable | measured value is not available due an incomplete measurement * invalid | measured value is not available due to an invalid measurement configuration (e.g. self-intersecting polygon) */ readonly state: "available" | "unavailable" | "invalid"; } /** @deprecated since version 4.33. Use the [AreaMeasurementAnalysis](https://developers.arcgis.com/javascript/latest/references/core/analysis/AreaMeasurementAnalysis/) or [Area Measurement 3D component](https://developers.arcgis.com/javascript/latest/references/map-components/components/arcgis-area-measurement-3d/) instead. For information on widget deprecation, read about [Esri's move to web components](https://developers.arcgis.com/javascript/latest/components-transition-plan/). */ export interface Measurement { /** * Describes the mode in which the measurement is computed. In `euclidean` mode, the area and perimeter length are computed from * a flat polygon with straight segments on the perimeter in the [ECEF](https://en.wikipedia.org/wiki/ECEF) coordinate system. * In `geodesic` mode, the area and perimeter length are computed from a geodesic polygon on the WGS84 ellipsoid. */ readonly mode: MeasurementMode; /** Area of the polygon. */ readonly area: MeasurementValue; /** Perimeter length of the polygon. */ readonly perimeterLength: MeasurementValue; }