MeasurementViewModel
require(["esri/widgets/Measurement/MeasurementViewModel"], function(MeasurementVM) { /* code goes here */ });
esri/widgets/Measurement/MeasurementViewModel
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 | |
String | 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 | |
String | 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 String
Unit system (imperial, metric) or specific unit used for displaying the area values.
Possible Values:"metric"|"imperial"|"square-inches"|"square-feet"|"square-us-feet"|"square-yards"|"square-miles"|"square-meters"|"square-kilometers"|"acres"|"ares"|"hectares"
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 String
Unit system (imperial, metric) or specific unit used for displaying the distance values.
Possible Values:"metric"|"imperial"|"inches"|"feet"|"us-feet"|"yards"|"miles"|"nautical-miles"|"meters"|"kilometers"
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");