Display Configuration
Control how entities appear on the globe — icons, colors, trails, and data fields
The display section defines how entities from a source are rendered on the globe and in the detail panel. This configuration is consumed by the frontend via the GetLayers gRPC API.
display:
icon:
shape: dot
rotatable: false
interpolation: false
scale: 1.0
trail:
color: "#ffffff"
width: 1.5
opacity: 0.7
style:
color: "#ffffff"
point_size: 6
color_by:
field: status
values:
operational: "#00ff9d"
default_color: "#888888"
field_renderers: []
Icon
Controls the map icon rendered for each entity on the globe.
icon.shape
string
requireddot.icon.rotatable
boolean
default: falseicon.interpolation
boolean
default: falseicon.scale
float
default: 1.0Available icon shapes
| Category | Shapes |
|---|---|
| Aviation | flight, flight-alt-a, flight-alt-b, flight-alt-c, drone, helicopter |
| Space | diamond, satellite, iss, rocket, telescope, meteor |
| Maritime | ship, anchor, wave |
| Military | missile, tank, shield, crosshair, radar, explosion, bullseye |
| Weather | lightning, cloud, wind, tornado, snowflake, hurricane, flood |
| Hazard | warning, radiation, nuclear, biohazard, skull, fire, volcano |
| Seismic | ripple, crack |
| Radio | radio |
| Infrastructure | tower, building, bridge, factory, powerplant, crane, warehouse |
| Geometry | dot, star, hexagon, circle-ring, chevron, triangle, pentagon, cross |
| Other | marker, tree |
dot as the default for generic data. Pick a domain-specific shape to make layers visually distinct – ripple for earthquakes, flight for aircraft, ship for vessels, fire for hotspots.# Aircraft with rotation and smooth interpolation
icon:
shape: flight
rotatable: true
interpolation: true
scale: 1.0
# Earthquake with seismic ripple icon
icon:
shape: ripple
rotatable: false
interpolation: false
scale: 1.0
Trail
Defines the path trail rendered behind moving entities. Trails show historical positions as a line on the globe.
trail.color
string
required#rrggbb).trail.width
float
default: 1.5trail.opacity
float
default: 0.7trail:
color: "#00ff9d"
width: 2.0
opacity: 0.8
recording.mode: append, where each poll adds a new position to the entity’s history. With upsert mode, only the latest position exists, so trails will not render meaningful paths.Style
Base rendering style for the entity point on the globe.
style.color
string
required#rrggbb).style.point_size
integer
requiredstyle:
color: "#ff006e"
point_size: 6
Color by
Colors each entity by the value of a metadata field instead of applying a single base color. When present, color_by overrides style.color per entity: the client looks up the entity’s field value in values and uses the matched hex color, falling back to default_color.
color_by.field
string
requiredcolor_by.values
map[string]string
required#rrggbb). At least one entry is required, and each value must be a valid hex color.color_by.default_color
stringvalues.This example, from sources.d/wikidata_nuclear_facilities.yaml, colors each facility by its operational status:
color_by:
field: status
values:
operational: "#00ff9d"
under_construction: "#ffcc00"
shutdown: "#ff9900"
decommissioned: "#ff4444"
default_color: "#888888"
Field renderers
Field renderers control how metadata fields appear in the entity detail panel. Each renderer maps one or more metadata keys to a formatted display.
field_renderers:
- keys: [magnitude, mag]
label: "MAGNITUDE"
format:
type: float
precision: 1
prefix: "M"
priority: 0
field_renderers[].keys
string[]
requiredfield_renderers[].label
string
requiredfield_renderers[].format
object
requiredfield_renderers[].priority
integer
default: 0Format options
format.type
string
requiredstring, float, integer, raw.format.precision
integerfloat type. Example: precision 1 formats 4.237 as 4.2.format.prefix
string"M" produces M4.2.format.suffix
string" km" produces 10.5 km.format.transform
stringupper, lower. Only applies to string type.Complete example
This example defines renderers for an earthquake source with magnitude, depth, location, and type fields:
display:
icon:
shape: ripple
rotatable: false
interpolation: false
scale: 1.0
trail:
color: "#ff006e"
width: 1.5
opacity: 0.7
style:
color: "#ff006e"
point_size: 6
field_renderers:
- keys: [magnitude, mag]
label: "MAGNITUDE"
format:
type: float
precision: 1
prefix: "M"
priority: 0
- keys: [depth, depth_km]
label: "DEPTH"
format:
type: float
precision: 1
suffix: " km"
priority: 1
- keys: [place]
label: "LOCATION"
format:
type: string
priority: 2
- keys: [type]
label: "TYPE"
format:
type: string
transform: upper
priority: 3
- keys: [source]
label: "SOURCE"
format:
type: string
transform: upper
priority: 4
This renders the detail panel as:
MAGNITUDE M4.2
DEPTH 10.5 km
LOCATION Central California
TYPE EARTHQUAKE
SOURCE EMSC
Matching across sources
When multiple sources feed the same layer_type, their metadata field names may differ. Use the keys array to match all variants:
# Matches "magnitude" from source A and "mag" from source B
- keys: [magnitude, mag]
label: "MAGNITUDE"
format:
type: float
precision: 1
prefix: "M"
priority: 0