TrackInfo

AMD: require(["esri/layers/support/TrackInfo"], (TrackInfo) => { /* code goes here */ });
ESM: import TrackInfo from "@arcgis/core/layers/support/TrackInfo.js";
Class: esri/layers/support/TrackInfo
Inheritance: TrackInfoAccessor
Since: ArcGIS Maps SDK for JavaScript 4.32
beta

TrackInfo provides information about how to display and analyze temporal data in a layer. This information includes how to render the latest observations, previous observations, and track lines. It also includes information about how to aggregate data and display popups. TrackInfo is used in the StreamLayer and FeatureLayer classes.

See also

Constructors

TrackInfo

Constructor
new TrackInfo(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 Watch for changes topic.
Show inherited properties Hide inherited properties
Name Type Summary Class

The name of the class.

Accessor

Indicates whether the track info is enabled.

TrackInfo

An array of aggregate fields that summarize layer.fields in all observations of the track.

TrackInfo

Configuration properties for displaying the latest observations.

TrackInfo

The maximum age of displayed observations.

TrackInfo

The maximum number of observations to display per track.

TrackInfo

Indicates whether to display the popup for the track as defined in the popupTemplate.

TrackInfo

The PopupTemplate to apply to the track.

TrackInfo

Configuration properties for displaying previous observations.

TrackInfo

Indicates which field from the layer's timeInfo will be used to calculate observation ages for trackInfo.maxDisplayDuration.

TrackInfo

Configuration properties for displaying track lines.

TrackInfo

Property Details

declaredClass

Inherited
Property
declaredClass Stringreadonly
Inherited from Accessor

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

enabled

Property
enabled Boolean

Indicates whether the track info is enabled.

Default Value:true
Example
trackInfo.enabled = false;

fields

Property
fields AggregateField[]autocast
Autocasts from Object[]

An array of aggregate fields that summarize layer.fields in all observations of the track. Only visible observations are included in the aggregated data. Observations filtered out because of maxDisplayObservations or maxDisplayDuration are excluded from any aggregate field calculations.

These fields may only be used by the popupTemplate, and by the labelingInfo and renderer of trackLines.

Example
// Based on the fields in the layer, the following track info fields
// could be defined:
trackInfo.fields = [{
  name: "total_observations",
  statisticType: "count"
}, {
  name: "AVG_speed",
  onStatisticField: "speed",
  statisticType: "avg"
}];

latestObservations

Property
latestObservations TrackPartInfoautocast

Configuration properties for displaying the latest observations.

Example
trackInfo.latestObservations = {
  renderer: {
    type: "simple",
    symbol: {
      type: "simple-marker",
      style: "circle",
      color: "red",
      size: 10
    }
  }
};

maxDisplayDuration

Property
maxDisplayDuration TimeInterval |null |undefinedautocast

The maximum age of displayed observations. Observations older than this will not be displayed. Age is calculated by subtracting the time indicated by trackInfo.timeField from the view.timeExtent.end. For StreamLayer, age is calculated by subtracting the time indicated by trackInfo.timeField from the system time. If no duration is specified, or if its value is 0, then displayed observations will not be limited by age.

Default Value:null
Example
trackInfo.maxDisplayDuration = { value: 30, unit: "seconds" };

maxDisplayObservationsPerTrack

Property
maxDisplayObservationsPerTrack Number

The maximum number of observations to display per track. If the value is 0, no limit will be imposed.

Default Value:0
Example
trackInfo.maxDisplayObservationsPerTrack = 10;

popupEnabled

Property
popupEnabled Boolean

Indicates whether to display the popup for the track as defined in the popupTemplate.

Default Value:true
Example
trackInfo.popupEnabled = false;

popupTemplate

Property
popupTemplate PopupTemplate |null |undefinedautocast

The PopupTemplate to apply to the track. When set, a popupTemplate independent of the layer.popupTemplate is used. This popup can display summary information for each track, such as feature count or any other field defined in fields.

The PopupTemplate may contain one or more Arcade expressions following the specification defined by the Arcade Feature Reduction Popup Profile. Expressions must return a string or a number.

Example
layer.trackInfo = {
  fields: [{
    name: "avg_speed",
    alias: "Average speed",
    onStatisticField: "speed",
    statisticType: "avg"
  }, {
    name: "total_observations",
    statisticType: "count"
  }],
  popupTemplate: {
    content: [{
      type: "text",
      text: "This track contains <b>{total_observations}</b> features."
    }, {
      type: "text",
      text: "The average speed in this track is <b>{avg_speed}</b>."
    }],
    fieldInfos: [{
      fieldName: "avg_speed",
      format: {
        digitSeparator: true,
        places: 1
      }
    }]
  }
};

previousObservations

Property
previousObservations TrackPartInfoautocast

Configuration properties for displaying previous observations.

Example
trackInfo.previousObservations = {
  renderer: {
    type: "simple",
    symbol: {
      type: "simple-marker",
      style: "circle",
      color: "blue",
      size: 10
    }
  }
};

timeField

Property
timeField String

Indicates which field from the layer's timeInfo will be used to calculate observation ages for trackInfo.maxDisplayDuration. The timeReceived option is the system time when the client received the observation, and is only valid for StreamLayer.

Possible Values:"timeReceived" |"startTimeField" |"endTimeField"

Default Value:"startTimeField"
Example
trackInfo.timeField = "timeReceived";

trackLines

Property
trackLines TrackPartInfoautocast

Configuration properties for displaying track lines.

Example
trackInfo.trackLines = {
  renderer: {
    type: "simple",
    symbol: {
      type: "simple-line",
      color: "green",
      width: 2
    }
  }
};

Method Overview

Show inherited methods Hide inherited methods
Name Return Type Summary Class

Adds one or more handles which are to be tied to the lifecycle of the object.

Accessor
this

Creates a deep clone of this object.

TrackInfo

Creates a new instance of this class and initializes it with values from a JSON object generated from an ArcGIS product.

TrackInfo

Returns true if a named group of handles exist.

Accessor

Removes a group of handles owned by the object.

Accessor

Converts an instance of this class to its ArcGIS portal JSON representation.

TrackInfo

Method Details

addHandles

Inherited
Method
addHandles(handleOrHandles, groupKey)
Inherited from Accessor

Adds one or more handles which are to be tied to the lifecycle of the object. The handles will be removed when the object is destroyed.

// Manually manage handles
const handle = reactiveUtils.when(
  () => !view.updating,
  () => {
    wkidSelect.disabled = false;
  },
  { once: true }
);

this.addHandles(handle);

// Destroy the object
this.destroy();
Parameters
handleOrHandles WatchHandle|WatchHandle[]

Handles marked for removal once the object is destroyed.

groupKey *
optional

Key identifying the group to which the handles should be added. All the handles in the group can later be removed with Accessor.removeHandles(). If no key is provided the handles are added to a default group.

clone

Method
clone(){this}

Creates a deep clone of this object. Any properties that store values by reference will be assigned copies of the referenced values on the cloned instance.

Returns
Type Description
this A deep clone of the class instance that invoked this method.

fromJSON

Method
fromJSON(json){* |null |undefined}static

Creates a new instance of this class and initializes it with values from a JSON object generated from an ArcGIS product. The object passed into the input json parameter often comes from a response to a query operation in the REST API or a toJSON() method from another ArcGIS product. See the Using fromJSON() topic in the Guide for details and examples of when and how to use this function.

Parameter
json Object

A JSON representation of the instance in the ArcGIS format. See the ArcGIS REST API documentation for examples of the structure of various input JSON objects.

Returns
Type Description
* | null | undefined Returns a new instance of this class.

hasHandles

Inherited
Method
hasHandles(groupKey){Boolean}
Inherited from Accessor

Returns true if a named group of handles exist.

Parameter
groupKey *
optional

A group key.

Returns
Type Description
Boolean Returns true if a named group of handles exist.
Example
// Remove a named group of handles if they exist.
if (obj.hasHandles("watch-view-updates")) {
  obj.removeHandles("watch-view-updates");
}

removeHandles

Inherited
Method
removeHandles(groupKey)
Inherited from Accessor

Removes a group of handles owned by the object.

Parameter
groupKey *
optional

A group key or an array or collection of group keys to remove.

Example
obj.removeHandles(); // removes handles from default group

obj.removeHandles("handle-group");
obj.removeHandles("other-handle-group");

toJSON

Method
toJSON(){Object}

Converts an instance of this class to its ArcGIS portal JSON representation. See the Using fromJSON() guide topic for more information.

Returns
Type Description
Object The ArcGIS portal JSON representation of an instance of this class.

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

You can no longer sign into this site. Go to your ArcGIS portal or the ArcGIS Location Platform dashboard to perform management tasks.

Your ArcGIS portal

Create, manage, and access API keys and OAuth 2.0 developer credentials, hosted layers, and data services.

Your ArcGIS Location Platform dashboard

Manage billing, monitor service usage, and access additional resources.

Learn more about these changes in the What's new in Esri Developers June 2024 blog post.

Close