MeasurementViewModel
require(["esri/widgets/Measurement/MeasurementViewModel"], function(MeasurementVM) { /* code goes here */ });esri/widgets/Measurement/MeasurementViewModelProvides the logic for the Measurement widget. Read the Widget development - ViewModel pattern guide topic to get a better understanding of how to use this class.
Constructors
- new MeasurementViewModel(properties)
- Parameter:properties Objectoptional
See the properties for a list of all the properties that may be passed into the constructor.
Property Overview
| Name | Type | Summary | Class | |
|---|---|---|---|---|
| String | Specifies the current measurement tool to display. more details | more details | MeasurementViewModel | |
| AreaMeasurement2DViewModel|AreaMeasurement3DViewModel|DirectLineMeasurement3DViewModel|DistanceMeasurement2DViewModel | View model of the active measurement widget. more details | more details | MeasurementViewModel | |
| SystemOrAreaUnit | Unit system (imperial, metric) or specific unit used for displaying the area values. more details | more details | MeasurementViewModel | |
| String | The name of the class. more details | more details | Accessor | |
| SystemOrLengthUnit | Unit system (imperial, metric) or specific unit used for displaying the distance values. more details | more details | MeasurementViewModel | |
| String | The ViewModel's state. more details | more details | MeasurementViewModel | |
| MapView|SceneView | A reference to the MapView or SceneView. more details | more details | MeasurementViewModel |
Property Details
- activeTool String
Specifies the current measurement tool to display. Setting its value to
areaactivates the area measurement tool and it works for both MapView and SceneView. To measure distance in a MapView set the property todistanceand in a SceneView set it todirect-line. If this property is not set, the widget will not be displayed.Possible Values:"area"|"distance"|"direct-line"
- Default Value:null
Example:// To create the Measurement widget with SceneView's linear measurement widget active. var measurement = new Measurement({ viewModel: { view: view, activeTool: "direct-line" } });
View model of the active measurement widget.
Example:// Print the active view model to the console. var measurement = new Measurement({ viewModel: { areaUnit: "square-us-feet", view: view, activeTool: "area" } }); console.log("Active ViewModel: ", measurement.viewModel.activeViewModel);
- areaUnit SystemOrAreaUnit
Unit system (imperial, metric) or specific unit used for displaying the area values.
Example:// To create the Measurement widget that displays area in square US feet var measurement = new Measurement({ viewModel: { areaUnit: "square-us-feet", view: view, activeTool: "area" } }); // To display the current measurement unit for area console.log("Current unit: ", measurement.viewModel.areaUnit);
The name of the class. The declared class name is formatted as
esri.folder.className.
- linearUnit SystemOrLengthUnit
Unit system (imperial, metric) or specific unit used for displaying the distance values.
Example:// To create the Measurement widget that displays distance in yards var measurement = new Measurement({ viewModel: { linearUnit: "yards", view: view, activeTool: "distance" } }); // To display the current measurement unit for distance console.log('Current unit: ', measurement.viewModel.linearUnit);
- state Stringreadonly
The ViewModel's state.
Value Description disabled not ready yet ready ready for measuring measuring measuring has started measured measuring has finished Possible Values:"disabled"|"ready"|"measuring"|"measured"
- Default Value:disabled
Example:// To display the state of the AreaMeasurement2D widget var measurement = new Measurement({ view: view, activeTool: "area" }); measurement.watch("viewModel.state", function(state){ console.log("Current state: ", state); });
- Example:
// Add the measurement widget to the upper right hand corner. const measurement = new Measurement({ viewModel: { view: view, activeTool = "distance"; } }); view.ui.add(measurement, "top-right");