Skip to content
import { getLabelSchemes } from "@arcgis/core/smartMapping/labels/clusters.js";
Since
ArcGIS Maps SDK for JavaScript 4.16

This object contains a helper method for generating default labels to be set on a layer's cluster configuration. The default label is based on the layer's renderer. In most cases the default label configuration will be the total number of features in the cluster. This value will be rounded and formatted (e.g. instead of 2385, the cluster label will display 2.4k). In some cases, such as renderers with a SizeVariable, the default label will display the average value of the attribute represented by the size variable.

clustering-generated-labels

This includes secondary labeling schemes you can experiment with in your clusters. This module only applies to layers with a point geometry type.

See also

Functions

getLabelSchemes

Function

Generates default FeatureReductionCluster.labelingInfo schemes to be set on a FeatureLayer's FeatureLayer.featureReduction configuration. Returns one or more suggested LabelClasses for a given layer based on its renderer. It also returns a suggested FeatureReductionCluster.clusterMinSize to ensure labels fit inside clusters.

If a renderer has a non-scale dependent SizeVariable, then the average value of the field or expression used to determine the cluster size will be suggested as the default label value. In all other scenarios, the suggested label will display the cluster count in the center of the label.

Signature
getLabelSchemes (parameters: SchemeParameters): Promise<Schemes | null | undefined>
Parameters
ParameterTypeDescriptionRequired
parameters

The function parameters.

Returns
Promise<Schemes | null | undefined>

Returns an object containing suggested primary and secondary labeling schemes to be set on the layer's featureReduction property.

Example
// Sets suggested labels on the clusters based on the underlying renderer
clusterLabelCreator.getLabelSchemes({
layer: featureLayer,
view: view
}).then(function(labelSchemes){
const featureReduction = featureLayer.featureReduction.clone();
const { labelingInfo, clusterMinSize } = labelSchemes.primaryScheme;
featureReduction.labelingInfo = labelingInfo;
featureReduction.clusterMinSize = clusterMinSize;
featureLayer.featureReduction = featureReduction;
}).catch(function(error){
console.error(error);
});

Type definitions

SchemeParameters

Type definition

field

Property
Type
string | undefined

The name of the AggregateField.name to use in the primary label scheme. If not specified, then the label will be based on the data used to vary cluster size.

renderer

Property
Type
ClusterableRenderer | undefined

The renderer to set on the input layer when clustering is enabled. Specify this parameter if the layer's renderer does not match the renderer that will be used when clustering is enabled. This cannot be a HeatmapRenderer.

layer

Property
Type
ClusteringSupportedLayer

The point layer that has or will have clustering enabled.

view

Property
Type
MapView

The view where the input layer will be rendered.

Scheme

Type definition

Contains a suggested labelingInfo to be set on the layer's featureReduction.labelingInfo.

name

Property
Type
string

The name of the generated cluster labeling scheme. This can be used in the UI of web map authoring apps.

labelingInfo

Property
Type
LabelClass[]

An array of LabelClass objects to set on the layer's featureReduction.labelingInfo property.

clusterMinSize

Property
Type
number

The suggested featureReduction.clusterMinSize required to fit labels within clusters.

fieldName

Property
Type
string

The name of the aggregate field the labeling scheme is based on. This can be used in the UI of web map authoring apps.

Schemes

Type definition

The return object of the getLabelSchemes() method.

primaryScheme

Property
Type
Scheme

Includes the primary labeling scheme suggested for the input layer's clusters.

secondarySchemes

Property
Type
Scheme[]

Includes secondary labeling schemes suggested for the input layer's clusters.