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 node | dashboard-v2 |
| Frontend | ui/dashboard (MapDisplayDS → MapContainer) |
| Data envelope | $heat-dataservice (contract) |
Layout component identifier
MapDisplay , configuration.component in v2 layout rows.
Layout configuration
Typical fields on the row configuration object:
| Field | Description |
|---|---|
component | "MapDisplay" |
name | Internal name |
titleContent | Panel title |
channels | Channel id(s) bound to this widget |
defaultRealm | Realm for data lookup |
showRealmFilterDropdown | Multi-realm UI |
enablePlaybackControls | Timeline controls |
showOpenModalButton | Expand to modal |
mapDisplayItem | { isSymbolToggle, mapConfig } |
mapConfig in layout uses the same keys as Legacy (see Legacy mapConfig table), including:
startMarkerStrokeColor,endMarkerStrokeColormarkerConeColorsmarkerConeAnglesshowMarkerCones,yawssupport 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
| Property | Value |
|---|---|
shape | "mapdisplay" |
data | MapDisplayDSProps |
MapDisplayDSProps:
| Field | Required | Description |
|---|---|---|
movements | Yes | Same structure as Legacy movements[] |
mapStats | No | Stats 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/Mapquery parameters. - Multiple map channels: if layout lists several channels,
getMapDisplayDataFromChannelscurrently overwritesmovementsper channel (last wins). Prefer one channel or merge upstream. Legacy v1 uses a singleMapobject instead. - Monolithic authoring: teams on v1 often publish
{ "Map": { ... } }in one blob; on v2 split layout config and channelmovements.
Related
- MapDisplay (Legacy) , mount id
MapDisplay, data keyMap - Next components index
- Dataservice migration status
- dashboard-v2 upstream contract
- Reference JSON:
tools/arbex/reference/next/MapDisplay.json - Arbex RAG:
tools/arbex/rag/reference/components/MapDisplay.md