import { getDisplayFieldName, getElevationFields, getTimeFields, getFeatureEditFields, getFeatureGeometryFields } from "@arcgis/core/layers/support/fieldUtils.js";const { getDisplayFieldName, getElevationFields, getTimeFields, getFeatureEditFields, getFeatureGeometryFields } = await $arcgis.import("@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
- 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
| Parameter | Type | Description | Required |
|---|---|---|---|
| layer | An array of fields to determine the display field from. | |
getElevationFields
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
| Parameter | Type | Description | Required |
|---|---|---|---|
| layer | The featureLayer to extract fields required for calculating feature z-values. | |
getTimeFields
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
| Parameter | Type | Description | Required |
|---|---|---|---|
| layer | The Feature Layer from which to extract time fields. | |
getFeatureEditFields
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
| Parameter | Type | Description | Required |
|---|---|---|---|
| layer | The layer from which to extract editor tracking fields. | |
- Returns
- string[]
An array of field names used for editor tracking.
getFeatureGeometryFields
- 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
| Parameter | Type | Description | Required |
|---|---|---|---|
| layer | The layer to extract geometry fields from. | |
- Returns
- string[]
An array of geometry field names.
getLabelingFields
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
| Parameter | Type | Description | Required |
|---|---|---|---|
| layer | The Feature Layer from which to extract label fields. | |
getExpressionFields
- 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[]>
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 fieldfieldUtils.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
- 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
| Parameter | Type | Description | Required |
|---|---|---|---|
| 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. | |
Example
const rendererFields = fieldUtils.getRendererFields(layer.renderer, layer.fieldsIndex);