WemapMap
Class: WemapMap
A thin, opinionated wrapper around a maplibre-gl Map for Wemap livemaps.
It owns the underlying maplibre instance (created from options.container)
and adds first-class helpers for camera control, event subscription, and
multi-level / indoor display via setLevel.
The raw maplibre map remains available through maplibre for anything the wrapper does not cover.
Requires core.init() from @wemap/core beforehand — map style, bounds, zoom
range, and indoor settings are read from the parsed livemap snippet.
Pass any WemapMapOptions field in the constructor to override them.
Implements
Constructors
Constructor
new WemapMap(
options):WemapMap
Parameters
options
Returns
WemapMap
Properties
maplibre
readonlymaplibre:Map$1
The underlying maplibre-gl map instance.
Escape hatch for anything this wrapper doesn't cover. Not covered by
semver: the maplibre-gl version and this accessor may change in any minor
release, so code written directly against .maplibre can break without a
major version bump. Prefer the wrapper API wherever one exists.
Methods
addControl()
addControl(
control,position?):this
Add a maplibre control to the map (e.g. LevelControl).
Thin passthrough to the underlying maplibre addControl.
Parameters
control
position?
Returns
this
addLayer()
addLayer(
layer,options?):this
Add a layer to the style, optionally wiring it into level management.
Safe to call before the style has loaded. When the style is already loaded
(e.g. after whenReady), the layer is added synchronously. Adding the
layer is a no-op if its id already exists. Use { indoor: true } for layers
whose features carry a level so they follow setLevel.
map.addSource('my-src', { type: 'geojson', data });
map.addLayer({ id: 'my-rooms', type: 'fill', source: 'my-src' }, { indoor: true });
Parameters
layer
The layer to add.
options?
AddLayerOptions = {}
Returns
this
addSource()
addSource(
id,source):this
Add a source to the style. Safe to call before the style has loaded — the source is added as soon as the style is ready. When the style is already loaded (e.g. after whenReady), the source is added synchronously. No-op if the id already exists.
Parameters
id
string
Unique source id.
source
SourceSpecification
The source specification.
Returns
this
clearSearch()
clearSearch():
this
Undo the highlight/filter applied by search when
interaction.autoHighlightSearch is on: clear the highlight and show all
pinpoints again. The current selection is left intact.
Returns
this
easeTo()
easeTo(
options):this
Animate the camera to a new center/zoom with a smooth transition.
Parameters
options
Returns
this
filterPois()
filterPois(
ids):this
Restrict default POI layers to the given pinpoint ids.
An empty array is equivalent to hideAllPois.
Parameters
ids
number[]
Returns
this
fitBounds()
fitBounds(
bounds,options?):this
Pan and zoom the map to contain the given bounds.
Parameters
bounds
BoundingBox
options?
Returns
this
flyTo()
flyTo(
options):this
Animate the camera to a new center/zoom with an arcing motion.
Parameters
options
Returns
this
getBounds()
getBounds():
BoundingBox
The current viewport bounds.
Returns
BoundingBox
Implementation of
getCenter()
getCenter():
Coordinates
The current map center.
Returns
Implementation of
getCurrentBuilding()
getCurrentBuilding():
Building|null
The building nearest the viewport center, or null when indoor is disabled
in the snippet, zoom is below indoor.minZoom, or no building is in view.
Returns
Building | null
getLevel()
getLevel():
number|null
The currently displayed level, or null when none has been set.
Returns
number | null
Implementation of
getPoiFilter()
getPoiFilter():
number[] |null
Read the current POI visibility filter.
null— no filter, all pinpoints shown (minus highlight/selected excludes).number[]— whitelist; an empty array means all hidden.
Returns
number[] | null
getPoiHighlighted()
getPoiHighlighted():
number[]
Returns
number[]
getPoiSelected()
getPoiSelected():
number[]
Returns
number[]
getViewportPinpoints()
getViewportPinpoints():
Pinpoint[]
The API pinpoints currently inside the viewport and matching the active level, read synchronously from the loaded set. Pull this after whenReady for a deterministic first paint instead of waiting for the first onViewportPinpointsChange emit.
Returns
Pinpoint[]
getZoom()
getZoom():
number
The current zoom level.
Returns
number
Implementation of
hideAllPois()
hideAllPois():
this
Hide all pinpoints on default layers.
Returns
this
off()
Call Signature
off<
T>(type,layer,listener):this
Type Parameters
T
T extends keyof MapLayerEventType
Parameters
type
T
layer
string | string[]
listener
(ev) => void
Returns
this
Implementation of
Call Signature
off<
T>(type,listener):this
Type Parameters
T
T extends keyof MapEventType
Parameters
type
T
listener
(ev) => void
Returns
this
Implementation of
MapViewport.off
Call Signature
off(
type,listener):this
Parameters
type
"load" | "moveend"
listener
() => void
Returns
this
Implementation of
MapViewport.off
on()
Call Signature
on<
T>(type,layer,listener):this
Type Parameters
T
T extends keyof MapLayerEventType
Parameters
type
T
layer
string | string[]
listener
(ev) => void
Returns
this
Implementation of
Call Signature
on<
T>(type,listener):this
Type Parameters
T
T extends keyof MapEventType
Parameters
type
T
listener
(ev) => void
Returns
this
Implementation of
MapViewport.on
Call Signature
on(
type,listener):this
Parameters
type
"load" | "moveend"
listener
() => void
Returns
this
Implementation of
MapViewport.on
onBuildingChange()
onBuildingChange(
listener): () =>void
Subscribe to active-building changes. No-op when indoor.enable is false
in the livemap snippet.
Parameters
listener
Returns
An unsubscribe function.
() => void
once()
Call Signature
once<
T>(type,layer,listener):this
Type Parameters
T
T extends keyof MapLayerEventType
Parameters
type
T
layer
string | string[]
listener
(ev) => void
Returns
this
Call Signature
once<
T>(type,listener):this
Type Parameters
T
T extends keyof MapEventType
Parameters
type
T
listener
(ev) => void
Returns
this
onLevelChange()
onLevelChange(
listener): () =>void
Subscribe to level changes.
Parameters
listener
Called with the new level on every setLevel.
Returns
An unsubscribe function.
() => void
onPoiClick()
onPoiClick(
listener): () =>void
Subscribe to clicks on stylesheet pinpoint features.
Parameters
listener
Returns
An unsubscribe function.
() => void
onPoiClickError()
onPoiClickError(
listener): () =>void
Subscribe to pinpoint click resolution failures.
Parameters
listener
Returns
An unsubscribe function.
() => void
onViewportPinpointsChange()
onViewportPinpointsChange(
listener): () =>void
Subscribe to pinpoint content refreshes driven by map preload (load, debounced moveend, level change).
Parameters
listener
ViewportPinpointsChangeListener
Returns
() => void
registerIndoorLayer()
registerIndoorLayer(
layerId):this
Register an extra layer as level-aware, so setLevel filters it too.
Use this for layers added at runtime (via maplibre) whose ids don't match
the indoorLayerFilter predicate. The current level is applied immediately.
map.maplibre.addLayer(myLevelAwareLayer);
map.registerIndoorLayer(myLevelAwareLayer.id);
Parameters
layerId
string
The id of a layer in the current style.
Returns
this
remove()
remove(
options?):void
Destroy the map and release all resources.
Optional layers (UserLocationLayer, DomMarkerLayer,
ItineraryLayer) are not destroyed unless options.layers is
true. When omitted, those layers keep their maplibre listeners and DOM
markers attached to a removed map instance — call each layer's
destroy() first, or pass { layers: true }.
Parameters
options?
Returns
void
removeControl()
removeControl(
control):this
Remove a previously added maplibre control.
Parameters
control
Returns
this
removeLayer()
removeLayer(
layerId):this
Remove a layer from the style. Safe to call before the style has loaded — the removal is deferred until the style is ready. No-op when the layer does not exist.
Parameters
layerId
string
The id of the layer to remove.
Returns
this
removeSource()
removeSource(
id):this
Remove a source from the style. Safe to call before the style has loaded — the removal is deferred until the style is ready. No-op when the source does not exist.
Parameters
id
string
The id of the source to remove.
Returns
this
search()
search(
query,options?):Promise<PinpointSearchResponse>
Search the livemap's pinpoints within the current viewport and level.
When interaction.autoHighlightSearch is enabled, the result pinpoints are
highlighted and every other pinpoint is filtered out of the default layers
(setPoiHighlighted + filterPois). Otherwise the map is left
untouched and only the response is returned. Clear the applied state with
clearSearch.
Parameters
query
string
Free-text search term.
options?
WemapSearchOptions = {}
Optional overrides (limit, tags, level).
Returns
Promise<PinpointSearchResponse>
setCenter()
setCenter(
center):this
Recenter the map instantly (no animation).
Parameters
center
Returns
this
setLevel()
setLevel(
level):this
Display a single level across all level-aware layers.
Safe to call before the style has loaded; the level is applied as soon as the style is ready and re-applied across style swaps.
Parameters
level
number
The level to display.
Returns
this
setPoiHighlighted()
setPoiHighlighted(
ids):this
Replace the full list of highlighted stylesheet pinpoint ids.
Parameters
ids
number[]
Returns
this
setPoiSelected()
setPoiSelected(
ids):this
Replace the full list of selected stylesheet pinpoint ids.
Parameters
ids
number[]
Returns
this
setZoom()
setZoom(
zoom):this
Set the zoom level instantly (no animation).
Parameters
zoom
number
Returns
this
showAllPois()
showAllPois():
this
Clear the POI visibility filter — show all pinpoints on default layers.
Returns
this
unregisterIndoorLayer()
unregisterIndoorLayer(
layerId):this
Stop treating a previously-registered layer as level-aware and restore its original filter.
Parameters
layerId
string
The id passed to registerIndoorLayer.
Returns
this
whenReady()
whenReady():
Promise<void>
Resolves when the map style is ready — safe to await in async setup code
without racing on('load'). Resolves immediately if the style is already
loaded.
Returns
Promise<void>