UNPKG

@arcgis/map-components

Version:
172 lines (170 loc) 10.4 kB
/// <reference types="@arcgis/core/interfaces.d.ts" /> /// <reference types="../../index.d.ts" /> import { PublicLitElement as LitElement, JsxNode, TargetedEvent } from '@arcgis/lumina'; import { Use } from '@arcgis/lumina/controllers'; import { ArcgisReferenceElement } from '../../utils/component-utils'; import { default as DirectLineMeasurement3DViewModel } from './DirectLineMeasurement3dViewModel'; declare const useViewModel: (component: LitElement & Pick<DirectLineMeasurement3DViewModel, never> & import('../../controllers/useViewModel').ViewModelControllerUses<DirectLineMeasurement3DViewModel>) => DirectLineMeasurement3DViewModel; /** * The Direct Line Measurement 3D component can be added to a [Scene](https://developers.arcgis.com/javascript/latest/references/map-components/arcgis-scene/) * component to calculate and display vertical, horizontal, and direct distances between two points. * * [![measurement-line-3d](https://developers.arcgis.com/javascript/latest/assets/img/apiref/widgets/3D_DirectLineMeasurement_widget.png)](https://developers.arcgis.com/javascript/latest/sample-code/measurement-3d/) * * How distances are computed depends on the scene's spatial reference. * * In **geographic coordinate systems** (GCS) and in **Web Mercator**: * - Direct distance is computed in a Euclidean manner, in an [ECEF](https://en.wikipedia.org/wiki/ECEF) coordinate system (or equivalent on other planets); * - Horizontal distance is computed geodetically, taking into consideration the curvature of the planet; * - Vertical distance is computed as an elevation difference. * * In **projected coordinate systems** (PCS), apart from Web Mercator, all three distances (direct, horizontal, and vertical) * are computed in a Euclidean manner (in their respective PCS). * * Direct Line Measurement 3D component visualizes and labels the direct, horizontal, and vertical distances and displays the same values * in the UI panel. When the distance between the points is greater than 100 kilometers, * the measurement visualization is simplified, and only the horizontal and vertical distances are calculated. * The direct distance option becomes unavailable. * * ![measurement-line-3d](https://developers.arcgis.com/javascript/latest/assets/img/apiref/widgets/direct-line-measurement-3d.png) * * When the component is active, a horizontal "laser" line is drawn which indicates the height at the current mouse position. * This line can help in analyzing the heights of objects relative to each other and the terrain. * A second laser line shows the intersection of the scene with the vertical plane that passes through the checkered line. * * **Things to consider** * * * Direct Line Measurement 3D is designed to work in the Scene component. For measurements in the [Map](https://developers.arcgis.com/javascript/latest/references/map-components/arcgis-map/) * component, use [Distance Measurement 2D](https://developers.arcgis.com/javascript/latest/references/map-components/arcgis-distance-measurement-2d/). * * 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/api-reference/esri-layers-FeatureLayer.html), * [GraphicsLayer](https://developers.arcgis.com/javascript/latest/api-reference/esri-layers-GraphicsLayer.html) (except Mesh geometries), * [GeoJSONLayer](https://developers.arcgis.com/javascript/latest/api-reference/esri-layers-GeoJSONLayer.html), * [WFSLayer](https://developers.arcgis.com/javascript/latest/api-reference/esri-layers-WFSLayer.html), * [CSVLayer](https://developers.arcgis.com/javascript/latest/api-reference/esri-layers-CSVLayer.html), * [3D Object SceneLayer](https://developers.arcgis.com/javascript/latest/api-reference/esri-layers-SceneLayer.html), * and [BuildingSceneLayer](https://developers.arcgis.com/javascript/latest/api-reference/esri-layers-BuildingSceneLayer.html). * * **See also** * * - [DirectLineMeasurementAnalysis](https://developers.arcgis.com/javascript/latest/api-reference/esri-analysis-DirectLineMeasurementAnalysis.html) * - [Sample - Measurement in 3D](https://developers.arcgis.com/javascript/latest/sample-code/measurement-3d/) * - [Sample - Analysis objects](https://developers.arcgis.com/javascript/latest/sample-code/analysis-objects/) * - [Sample - Color theming for interactive tools](https://developers.arcgis.com/javascript/latest/sample-code/view-theme/) * * [Read more...](https://developers.arcgis.com/javascript/latest/references/map-components/arcgis-direct-line-measurement-3d/) */ export declare class ArcgisDirectLineMeasurement3d extends LitElement { /** * The [DirectLineMeasurementAnalysis](https://developers.arcgis.com/javascript/latest/api-reference/esri-analysis-DirectLineMeasurementAnalysis.html) * created or modified by the component. * * When connecting the Direct Line Measurement 3D component to the [Scene](https://developers.arcgis.com/javascript/latest/references/map-components/arcgis-scene/) * component, it automatically creates an empty analysis and adds it to the Scene's * [analyses](https://developers.arcgis.com/javascript/latest/references/map-components/arcgis-scene/#analyses) collection. * Whenever the component is destroyed, the analysis is automatically removed from the collection. * * Alternatively, a programmatically created analysis can be provided to the component. * Then, the application itself needs to add it to and later remove it from the Scene's analyses collection. * * ```js * // Create the analysis. * const directLineAnalysis = new DirectLineMeasurementAnalysis({ * startPoint: new Point({ * spatialReference: { latestWkid: 3857, wkid: 102100 }, * x: -13624995.61798748, * y: 4550334.030096778, * z: 63.378210234455764 * }), * endPoint: new Point({ * spatialReference: { latestWkid: 3857, wkid: 102100 }, * x: -13624921.53589075, * y: 4550407.42357004, * z: 63.3783810287714 * }), * }); * // Get the Scene and measurement component and wait until they are ready. * const viewElement = document.querySelector("arcgis-scene"); * await viewElement.viewOnReady(); * const directLineMeasurement3d = document.querySelector("arcgis-direct-line-measurement-3d"); * await directLineMeasurement3d.componentOnReady(); * // Add the analysis to the Scene component. * viewElement.analyses.add(directLineAnalysis); * // Connect the analysis to the measurement component: * directLineMeasurement3d.analysis = directLineAnalysis; * ``` */ analysis: __esri.DirectLineMeasurementAnalysis; /** * If true, the component will not be destroyed automatically when it is * disconnected from the document. This is useful when you want to move the * component to a different place on the page, or temporarily hide it. If this * is set, make sure to call the [destroy](https://developers.arcgis.com/javascript/latest/references/map-components/arcgis-direct-line-measurement-3d/#destroy) method when you are done to * prevent memory leaks. * * @default false */ autoDestroyDisabled: boolean; /** * Icon which represents the component. * Typically used when the component is controlled by another component (e.g. by the Expand component). * * @see [Calcite Icons](https://developers.arcgis.com/calcite-design-system/icons/) * @default "measure-line" */ icon?: HTMLCalciteIconElement["icon"]; /** The component's default label. */ label?: string; /** @default "bottom-left" */ position: __esri.UIPosition; /** * By assigning the `id` attribute of the Map or Scene component to this property, you can position a child component anywhere in the DOM while still maintaining a connection to the Map or Scene. * * @see [Associate components with a Map or Scene component](https://developers.arcgis.com/javascript/latest/programming-patterns/#associate-components-with-a-map-or-scene-component) */ referenceElement?: ArcgisReferenceElement | string; /** * The component's state. The values mean the following: * * * `disabled` - not ready yet * * `ready` - ready for measuring * * `measuring` - currently measuring * * `measured` - measuring has finished */ readonly state: "ready" | "disabled" | "measuring" | "measured"; /** * Unit system (imperial, metric) or specific unit used for displaying the distance values. Possible values are listed in * [unitOptions](#unitOptions). */ unit: __esri.SystemOrLengthUnit; /** * List of available units and unit systems (imperial, metric) that are shown in the component's dropdown. * By default, the following units are included: `metric`, `imperial`, `inches`, `feet`, `us-feet`, `yards`, `miles`, `nautical-miles`, `meters`, `kilometers`. * Possible [unit](#unit) values can only be a subset of this list. */ unitOptions: __esri.SystemOrLengthUnit[]; /** Clears the current measurement. */ clear(): Promise<void>; /** Permanently destroy the component. */ destroy(): Promise<void>; /** Starts a new measurement. */ start(): Promise<void>; /** Emitted when the value of a property is changed. Use this to listen to changes to properties. */ readonly arcgisPropertyChange: TargetedEvent<this, { name: "state" | "analysis"; }>; /** Emitted when the component associated with a map or scene view is is ready to be interacted with. */ readonly arcgisReady: TargetedEvent<this, void>; } /** * The Directline Measurement 3D component calculates and displays the 3D distance between two points. It can be used in a [Scene](https://developers.arcgis.com/javascript/latest/references/map-components/arcgis-scene/) component to measure the vertical, horizontal, and direct distance between two points. * * [Read more...](https://developers.arcgis.com/javascript/latest/references/map-components/arcgis-directline-measurement-3d/) * * @internal * @deprecated */ export declare class DeprecatedArcgisDirectLineMeasurement3d extends ArcgisDirectLineMeasurement3d { } export {};