Provides 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
area
activates the area measurement tool and it works for both MapView and SceneView. To measure distance in a MapView set the property todistance
and 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");