LegendViewModel

AMD: require(["esri/widgets/Legend/LegendViewModel"], (LegendVM) => { /* code goes here */ });
ESM: import LegendVM from "@arcgis/core/widgets/Legend/LegendViewModel";
Class: esri/widgets/Legend/LegendViewModel
Inheritance: LegendViewModel Accessor
Since: ArcGIS API for JavaScript 4.11

Provides the logic for the Legend widget, which displays a label and symbol for interpreting the Renderer of each layer in a map. This class may be used to create custom, interactive Legend widgets.

See also:
Example:
const legend = new Legend({
  view: view,
  viewModel: new LegendViewModel({
    view: view
  })
});
view.ui.add(legend, "bottom-left");

Constructors

new LegendViewModel(properties)
Parameter:
properties Object
optional

See the properties for a list of all the properties that may be passed into the constructor.

Property Overview

Any properties can be set, retrieved or listened to. See the Working with Properties topic.
Show inherited properties Hide inherited properties
Name Type Summary Class
Collection<ActiveLayerInfo>more details

Collection of ActiveLayerInfo objects used by the legend view to display data in the legend.

more detailsLegendViewModel
Booleanmore details

Indicates whether to show the Basemap layers in the Legend.

more detailsLegendViewModel
Stringmore details

The name of the class.

more detailsAccessor
Booleanmore details

When true, layers will only be shown in the legend if they are visible in the view's extent.

more detailsLegendViewModel
Object[]more details

Specifies a subset of the layers in the map to display in the legend.

more detailsLegendViewModel
Booleanmore details

Determines whether to respect the properties of the layers in the map that control the legend's visibility (minScale, maxScale, legendEnabled).

more detailsLegendViewModel
Stringmore details

The view model's state.

more detailsLegendViewModel
MapView|SceneViewmore details

The view from which the widget will operate.

more detailsLegendViewModel

Property Details

Autocasts from Object[]

Collection of ActiveLayerInfo objects used by the legend view to display data in the legend. Use this property to hide or display the layer's symbols in the legend when an ActiveLayerInfo is removed from or added to this collection.

basemapLegendVisible Boolean

Indicates whether to show the Basemap layers in the Legend.

Default Value:filterBasemaps
Example:
legend.viewModel.basemapLegendVisible = true;
declaredClass Stringreadonly inherited

The name of the class. The declared class name is formatted as esri.folder.className.

hideLayersNotInCurrentView Boolean
Since: ArcGIS API for JavaScript 4.21

When true, layers will only be shown in the legend if they are visible in the view's extent. When data from a layer is not visible in the view, the layer's legend information will be hidden.

To hide layers completely from the legend, you should set the legendEnabled property of the layer to false.

Default Value:false
See also:
Example:
// layers not displayed in the view
// will not be shown in the legend
legend.viewModel.hideLayersNotInCurrentView = true;
layerInfos Object[]

Specifies a subset of the layers in the map to display in the legend. If this property is not set, all operational layers in the map will display in the legend. This property can be used to control layer display order in the legend. Objects in this array are defined with the properties listed below.

Properties:
title String
optional

Specify a title for the layer. If no title is specified the service name is used.

layer Layer
optional

A layer to add to the legend.

respectLayerVisibility Boolean
Since: ArcGIS API for JavaScript 4.13

Determines whether to respect the properties of the layers in the map that control the legend's visibility (minScale, maxScale, legendEnabled). By default, a layer's legend elements will not render in the legend given the following conditions:

  • The layer's legendEnabled property is set to false.
  • If the view's scale is outside the visibility range defined by the layer's minScale and maxScale properties.

When the respectLayerVisibility property of the legend is set to false, the legend elements for each layer in the map will always display, thus disregarding the minScale, maxScale, and legendEnabled properties for each layer in the map.

Default Value:true
See also:
Example:
// Always displays legend elements for the map's layers
// regardless of their minScale, maxScale, and legendEnabled properties
legend.respectLayerVisibility = false;
state Stringreadonly

The view model's state.

Possible Values:"ready"|"disabled"

Default Value:disabled

The view from which the widget will operate.

Your browser is no longer supported. Please upgrade your browser for the best experience. See our browser deprecation post for more details.