Interface: VisualizationLayer
Defined in: spec/types.ts:499
Properties
activeLegendId?
optionalactiveLegendId?:string
Defined in: spec/types.ts:512
Id of the currently active legend from legends[].
click?
optionalclick?:LayerClickConfig
Defined in: spec/types.ts:579
Spec-driven click reaction. When present, <GeoVisProvider> invokes
click.onSelect for features clicked on this layer — without the consumer
placing a component or calling useGeoVisClick() in the tree. Declaring
click also opts the layer into click tracking, so activeLegendId is not
required. Typed via a type-only import so the data-only spec layer keeps no
runtime dependency on React (mirrors hoverTooltip).
clickAnchor?
optionalclickAnchor?:object
Defined in: spec/types.ts:536
Spec-driven click marker. When present, geovis automatically places a
visual indicator on the clicked feature without requiring a <GeoVisMarker>
component. Three rendering modes — see field descriptions.
color?
optionalcolor?:string
Colour of geovis's pin — the drop spec.images pins wear, with a white
dot — drawn when iconImage is not set. Default: '#3FB1CE'. For a custom HTML/React element, use
<GeoVisMarker> instead.
iconImage?
optionaliconImage?:string
MapLibre sprite icon name. Renders a feature-state-driven companion
symbol layer at the polygon label point.
iconSize?
optionaliconSize?:number
Scale factor for the sprite icon. Default: 1.
latKey?
optionallatKey?:string
Feature property key holding the latitude. Paired with lngKey, geovis
reads the pin position from feature.properties instead of the tile
geometry to avoid drift at high zoom.
lngKey?
optionallngKey?:string
Feature property key holding the longitude. Must be paired with latKey.
offset?
optionaloffset?: [number,number]
Pixel offset [x, y] applied to the DOM marker.
extrusion?
optionalextrusion?:PolygonExtrusion
Defined in: spec/types.ts:602
Renders a polygon layer in 3D, its features extruded by value — see PolygonExtrusion. Ignored on non-polygon geometries.
Example
const layer: VisualizationLayer = {
id: 'districts',
sourceId: 'districts-src',
geometry: 'polygon',
mapDataId: 'rates',
activeLegendId: 'rates-legend',
extrusion: { maxHeight: 4000 },
};
filter?
optionalfilter?:LayerFilter
Defined in: spec/types.ts:621
Declarative predicate that hides features not matching it, compiled to
the engine's native filter expression (dispatch({ type: 'set-filter' }),
PRD-002). Reads feature.properties[property] — the same direct-access
path propertyName uses above, not the mapData-joined feature-state
value. Gated by CapabilitySet.dataFeatures.filter per source type.
geometry
geometry:
GeoVisGeometryType
Defined in: spec/types.ts:502
hoverPaint?
optionalhoverPaint?:object
Defined in: spec/types.ts:524
Paint applied via MapLibre setFeatureState({ hover: true }) when the
pointer enters a feature. When present, the adapter adds a companion
line layer (<id>-hover-outline) driven by feature-state expressions.
lineColor?
optionallineColor?:string
lineWidth?
optionallineWidth?:number
hoverTooltip?
optionalhoverTooltip?:HoverTooltipConfig
Defined in: spec/types.ts:570
Spec-driven hover tooltip. When present, <GeoVisProvider> automatically
renders a <GeoVisHoverTooltip> for features hovered on this layer —
without requiring the component to be placed in the tree. Mirrors
GeoVisHoverTooltipProps (render, formatValue, style, offset,
emptyValueLabel, className). An empty object ({}) opts in to the
default tooltip layout. Typed via a type-only import so the data-only
spec layer keeps no runtime dependency on React.
id
id:
string
Defined in: spec/types.ts:500
legends?
optionallegends?:LegendSpec[]
Defined in: spec/types.ts:510
Optional alternative legend definitions presented as runtime toggles.
mapDataId?
optionalmapDataId?:string
Defined in: spec/types.ts:518
Optional reference to an entry in spec.mapData.
When present, the layer can be styled/queried by per-feature values
coming from the dataset (joined via feature.id or mapData.joinKey).
maxzoom?
optionalmaxzoom?:number
Defined in: spec/types.ts:507
minzoom?
optionalminzoom?:number
Defined in: spec/types.ts:506
paint?
optionalpaint?:LayerPaint
Defined in: spec/types.ts:508
propertyName?
optionalpropertyName?:string
Defined in: spec/types.ts:613
GeoJSON feature property name for direct data access without mapData.
When set (and mapDataId is absent), the proportional circles expression
reads values directly from feature.properties[propertyName] via MapLibre's
['get', propertyName] syntax — no feature-state join needed.
When mapDataId is also set, this field is ignored in favour of the
standard feature-state resolution.
selectedPaint?
optionalselectedPaint?:object
Defined in: spec/types.ts:530
Paint applied via MapLibre setFeatureState({ selected: true }) when a
feature is clicked. When present, the adapter adds a companion line layer
(<id>-selected-outline) driven by feature-state expressions.
lineColor?
optionallineColor?:string
lineWidth?
optionallineWidth?:number
sizeBy?
optionalsizeBy?:SizeBy
Defined in: spec/types.ts:585
Proportional symbol configuration. When present on a point layer,
circle-radius is driven by a data expression instead of a static value.
Ignored on non-point geometries.
sourceId
sourceId:
string
Defined in: spec/types.ts:501
sourceLayer?
optionalsourceLayer?:string
Defined in: spec/types.ts:503
title?
optionaltitle?:string
Defined in: spec/types.ts:504
transition?
optionaltransition?:LayerTransition
Defined in: spec/types.ts:639
Opt-in animated transition applied when this layer's source data changes
between two specs. Only honoured for point (circle) layers backed by a
geojson source; ignored otherwise. When declared, the adapter fades the
OLD points out while the NEW points fade in, instead of swapping data
instantly. Omit it to keep the instant setData behaviour.
Example
const layer: VisualizationLayer = {
id: 'stores',
sourceId: 'stores-src',
geometry: 'point',
transition: { kind: 'crossfade', durationMs: 600, easing: 'ease-in-out' },
};
visible?
optionalvisible?:boolean
Defined in: spec/types.ts:505