Skip to Content
This documentation is provided with the HEAT environment and is relevant for this HEAT instance only.
Dashboard ComponentsNextMapDisplay (Next)

MapDisplay (Next)

Same map capabilities as Legacy MapDisplay (routes, cones, playback), but data is loaded through the Heat data service from $heat-dataservice channels and configuration is split between layout and channel payloads.

Dashboard generation

Value
Runner nodedashboard-v2
Frontendui/dashboard (MapDisplayDSMapContainer)
Data envelope$heat-dataservice (contract)

Layout component identifier

MapDisplay , configuration.component in v2 layout rows.

Layout configuration

Typical fields on the row configuration object:

FieldDescription
component"MapDisplay"
nameInternal name
titleContentPanel title
channelsChannel id(s) bound to this widget
defaultRealmRealm for data lookup
showRealmFilterDropdownMulti-realm UI
enablePlaybackControlsTimeline controls
showOpenModalButtonExpand to modal
mapDisplayItem{ isSymbolToggle, mapConfig }

mapConfig in layout uses the same keys as Legacy (see Legacy mapConfig table), including:

  • startMarkerStrokeColor, endMarkerStrokeColor
  • markerConeColors
  • markerConeAngles
  • showMarkerCones, yaws support on movement points

Layout excerpt

{ "component": "MapDisplay", "colspan": 12, "configuration": { "name": "MapDisplay", "titleContent": "Phase 2 & 3", "channels": ["mapdisplay-data"], "defaultRealm": "circuit-01", "mapDisplayItem": { "isSymbolToggle": false, "mapConfig": { "zoom": 18, "showMarkerCones": true, "markerConeColors": [["rgba(141,34,96,0.5)", "rgba(0,150,200,0.5)"]], "startMarkerStrokeColor": "transparent", "endMarkerStrokeColor": "transparent" } } } }

Reference: ui/dashboard/src/lib/data-service/data-lib/heat-client/mockClient/mockData/layoutSchema.json.

Data contract

Envelope

Publish canonical $heat-dataservice with realms, groups, and channels per the dashboard-v2 upstream contract.

Map channel

PropertyValue
shape"mapdisplay"
dataMapDisplayDSProps

MapDisplayDSProps:

FieldRequiredDescription
movementsYesSame structure as Legacy movements[]
mapStatsNoStats below map

Movement points support yaw, yaws, heading, latitude/longitude or x/y, capturedDate, etc. See Legacy movement point fields.

mapConfig is not required in channel data for Next; it is read from layout mapDisplayItem.mapConfig (channel metadata may also supply hints depending on layout).

Example channel payload

{ "id": "mapdisplay-data", "name": "Map data", "groupId": "performance", "shape": "mapdisplay", "data": { "movements": [ { "name": "Crew 1", "movement": [ { "latitude": "51.21431", "longitude": "-1.83710", "heading": "45", "yaws": ["25", "90", "180"], "speed": "2", "capturedDate": "2025-05-08T11:56:40.029Z" } ], "markers": [] } ] } }

Behaviour notes

  • Playback follows the data-service timeline, not legacy /v1/Map query parameters.
  • Multiple map channels: if layout lists several channels, getMapDisplayDataFromChannels currently overwrites movements per channel (last wins). Prefer one channel or merge upstream. Legacy v1 uses a single Map object instead.
  • Monolithic authoring: teams on v1 often publish { "Map": { ... } } in one blob; on v2 split layout config and channel movements.