@arcgis/core
Version:
ArcGIS Maps SDK for JavaScript: A complete 2D and 3D mapping and data visualization API
77 lines (73 loc) • 4.21 kB
TypeScript
/**
* This object contains a helper method for generating default labels to be set on
* a layer's [binning configuration](https://developers.arcgis.com/javascript/latest/references/core/layers/support/FeatureReductionBinning/#labelingInfo).
* The default label is based on the [FeatureReductionBinning.renderer](https://developers.arcgis.com/javascript/latest/references/core/layers/support/FeatureReductionBinning/#renderer). In most cases the default label configuration will
* be the total number of features in the bin. This value will be rounded and formatted (e.g. instead of `2385`, the
* bin label will display `2.4k`).
*
* This includes secondary labeling schemes you can experiment with using on your bins.
* This module only applies to layers with a point geometry type.
*
* @since 4.27
* @see [FeatureReductionBinning.labelingInfo](https://developers.arcgis.com/javascript/latest/references/core/layers/support/FeatureReductionBinning/#labelingInfo)
*/
import type LabelClass from "../../layers/support/LabelClass.js";
import type { RendererUnion } from "../../renderers/types.js";
import type { BinningSupportedLayer } from "../types.js";
/**
* Generates default [FeatureReductionBinning.labelingInfo](https://developers.arcgis.com/javascript/latest/references/core/layers/support/FeatureReductionBinning/#labelingInfo)
* schemes to be set on a FeatureLayer's [FeatureLayer.featureReduction](https://developers.arcgis.com/javascript/latest/references/core/layers/FeatureLayer/#featureReduction) property.
* Returns one or more suggested LabelClasses
* for [FeatureReductionBinning](https://developers.arcgis.com/javascript/latest/references/core/layers/support/FeatureReductionBinning/) based on its renderer.
*
* @param parameters - The function parameters.
* @returns Returns an object containing suggested primary
* and secondary labeling schemes to be set on the layer's `featureReduction` property.
* @example
* // Sets a suggested label scheme for the binning config based on its renderer
* const { primaryScheme } = await binLabelCreator.getLabelSchemes({
* layer: featureLayer
* });
*
* const featureReduction = featureLayer.featureReduction.clone();
* featureReduction.labelingInfo = primaryScheme.labelingInfo;
* featureLayer.featureReduction = featureReduction;
*/
export function getLabelSchemes(parameters: SchemeParameters): Promise<Schemes | null | undefined>;
export interface SchemeParameters {
/**
* The name of the [AggregateField.name](https://developers.arcgis.com/javascript/latest/references/core/layers/support/AggregateField/#name)
* to use in the primary label scheme. If not specified, then the label will be based on the aggregate count field.
*/
field?: string;
/** The renderer to set on `layer.featureReduction.renderer` when binning is enabled. */
renderer?: RendererUnion;
/** The point layer that has or will have binning enabled. */
layer: BinningSupportedLayer;
}
/** Contains suggested labelingInfo to be set on the layer's [featureReduction.labelingInfo](https://developers.arcgis.com/javascript/latest/references/core/layers/support/FeatureReductionBinning/#labelingInfo). */
export interface Scheme {
/**
* The name of the generated binning labeling scheme.
* This can be used in the UI of web map authoring apps.
*/
name: string;
/**
* An array of
* LabelClass objects to set on the layer's [featureReduction.labelingInfo](https://developers.arcgis.com/javascript/latest/references/core/layers/support/FeatureReductionBinning/#labelingInfo)
* property.
*/
labelingInfo: LabelClass[];
/**
* The name of the aggregate field used in the labeling scheme.
* This can be used in the UI of web map authoring apps.
*/
fieldName: string;
}
/** The return object of the [getLabelSchemes()](https://developers.arcgis.com/javascript/latest/references/core/smartMapping/labels/bins/#getLabelSchemes) method. */
export interface Schemes {
/** Includes the primary labeling scheme suggested for the input layer's bins. */
primaryScheme: Scheme;
/** Includes secondary labeling schemes suggested for the input layer's bins. */
secondarySchemes: Scheme[];
}