Skip to content
import { getDisplayFieldName, getElevationFields, getTimeFields, getFeatureEditFields, getFeatureGeometryFields } from "@arcgis/core/layers/support/fieldUtils.js";
Since
ArcGIS Maps SDK for JavaScript 4.11

Convenience methods for getting field names used for feature layer labeling, elevation, editor tracking and time span.

Functions

getDisplayFieldName

Function
Since
ArcGIS Maps SDK for JavaScript 4.15

Gets the appropriate display field name to label a feature.

Signature
getDisplayFieldName (layer: FeatureLayer | CSVLayer | GeoJSONLayer | OGCFeatureLayer | SceneLayer | StreamLayer): string | null | undefined
Parameters
ParameterTypeDescriptionRequired
layer

An array of fields to determine the display field from.

Returns
string | null | undefined

The name of the display field to use for labeling.

getElevationFields

Function

Returns an array of field names used in the Arcade expression for calculating the z-values of features in the given feature layer's FeatureLayer.elevationInfo.

Signature
getElevationFields (layer: FeatureLayer | null | undefined): Promise<string[]>
Parameters
ParameterTypeDescriptionRequired
layer

The featureLayer to extract fields required for calculating feature z-values.

Returns
Promise<string[]>

When resolved, returns an array of field names.

getTimeFields

Function

Returns an array of field names related to time. It includes the fields from the FeatureLayer.timeInfo, and the trackIdField.

Signature
getTimeFields (layer: FeatureLayer | null | undefined): Promise<string[]>
Parameters
ParameterTypeDescriptionRequired
layer

The Feature Layer from which to extract time fields.

Returns
Promise<string[]>

When resolved, returns an array of time field names.

getFeatureEditFields

Function

Returns an array of editor tracking field names for a given layer. It includes the fields from the FeatureLayer.editFieldsInfo.

Signature
getFeatureEditFields (layer: FeatureLayer | SubtypeGroupLayer): string[]
Parameters
ParameterTypeDescriptionRequired
layer

The layer from which to extract editor tracking fields.

Returns
string[]

An array of field names used for editor tracking.

getFeatureGeometryFields

Function
Since
ArcGIS Maps SDK for JavaScript 4.19

Returns an array of geometry field names for a given layer.

Signature
getFeatureGeometryFields (layer: FeatureLayer | SubtypeGroupLayer): string[]
Parameters
ParameterTypeDescriptionRequired
layer

The layer to extract geometry fields from.

Returns
string[]

An array of geometry field names.

getLabelingFields

Function

Returns an array of field names used in the Arcade expression for labeling features in the given feature layer's FeatureLayer.labelingInfo.

Signature
getLabelingFields (layer: FeatureLayer | null | undefined): Promise<string[]>
Parameters
ParameterTypeDescriptionRequired
layer

The Feature Layer from which to extract label fields.

Returns
Promise<string[]>

When resolved, returns an array of field names used for labeling.

getExpressionFields

Function
Since
ArcGIS Maps SDK for JavaScript 4.15

Returns an array of field names referenced in one or more Arcade expressions to be set on the given layer in either the renderer, labels, or popup template. This is useful for when you want to request the data for these fields prior to updating a renderer for fast visual updates or when you want to execute a client-side query on that data prior to setting the Arcade expressions on the layer.

See also
Signature
getExpressionFields (layer: FeatureLayer | CSVLayer | GeoJSONLayer | SceneLayer | StreamLayer, expressions: string[]): Promise<string[]>
Parameters
ParameterTypeDescriptionRequired
layer

The layer for which the Arcade expressions are authored. This layer must have a fields property.

expressions
string[]

An array of Arcade expressions to be set on the given layer.

Returns
Promise<string[]>

Returns an array of field names declared either by the $feature.fieldName or $feature[fieldName] syntax.

Example
const windDirectionExpression = `
$feature["WIND_DIRECT"];
$feature["WIND_SPEED"];
var DEG = $feature.WIND_DIRECT;
var SPEED = $feature.WIND_SPEED;
var DIR = When( SPEED == 0, "",
(DEG < 22.5 && DEG >= 0) || DEG > 337.5, "N",
DEG >= 22.5 && DEG < 67.5, "NE",
DEG >= 67.5 && DEG < 112.5, "E",
DEG >= 112.5 && DEG < 157.5, "SE",
DEG >= 157.5 && DEG < 202.5, "S",
DEG >= 202.5 && DEG < 247.5, "SW",
DEG >= 247.5 && DEG < 292.5, "W",
DEG >= 292.5 && DEG < 337.5, "NW", "" );
return SPEED + " mph " + DIR;
`;
const labelExpressions = [
"Round($feature.TEMP) + '° F';",
"$feature.R_HUMIDITY + '% RH'",
"$feature.STATION_NAME",
windDirectionExpression
];
// Assume the layer has only requested the OBJECTID field
fieldUtils.getExpressionFields(layer, labelExpressions)
.then(function(fieldNames){
// fieldNames = ["R_HUMIDITY", "STATION_NAME", "TEMP", "WIND_DIRECT", "WIND_SPEED"]
layer.outFields = fieldNames;
// Do something else like a client-side query with those fields
}).catch(function(error){
console.error(error);
});

getRendererFields

Function
Since
ArcGIS Maps SDK for JavaScript 4.30

Returns an array of field names used in the layer's Renderer.

Signature
getRendererFields (renderer: RendererUnion | null | undefined, fieldsIndex: FieldsIndex<Field>): Promise<string[]>
Parameters
ParameterTypeDescriptionRequired
renderer

Layer's renderer to collect field names used in that renderer.

fieldsIndex

The field index of the layer. It can be used to make case-insensitive lookups for a field by name.

Returns
Promise<string[]>

When resolved, returns an array of field names required by the layer's renderer, sorted in ascending order.

Example
const rendererFields = fieldUtils.getRendererFields(layer.renderer, layer.fieldsIndex);

Type definitions

FieldValue

Type definition

Value from a specified field.