Interface: VisualizationLayer
Defined in: spec/types.ts:439
Properties
activeLegendId?
optionalactiveLegendId?:string
Defined in: spec/types.ts:452
Id of the currently active legend from legends[].
click?
optionalclick?:LayerClickConfig
Defined in: spec/types.ts:519
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:476
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
Accent colour for the built-in SVG pin. Applied 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:542
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:561
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:442
hoverPaint?
optionalhoverPaint?:object
Defined in: spec/types.ts:464
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:510
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:440
legends?
optionallegends?:LegendSpec[]
Defined in: spec/types.ts:450
Optional alternative legend definitions presented as runtime toggles.
mapDataId?
optionalmapDataId?:string
Defined in: spec/types.ts:458
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:447
minzoom?
optionalminzoom?:number
Defined in: spec/types.ts:446
paint?
optionalpaint?:LayerPaint
Defined in: spec/types.ts:448
propertyName?
optionalpropertyName?:string
Defined in: spec/types.ts:553
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:470
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:525
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:441
sourceLayer?
optionalsourceLayer?:string
Defined in: spec/types.ts:443
title?
optionaltitle?:string
Defined in: spec/types.ts:444
transition?
optionaltransition?:LayerTransition
Defined in: spec/types.ts:579
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:445