API reference / @zaes/tactical-graphics/maplibre / NativeLayerRenderer
Class: NativeLayerRenderer
Defined in: components/maplibre/native/NativeLayerRenderer.ts:276
Constructors
Constructor
new NativeLayerRenderer(map, options?): NativeLayerRenderer;Defined in: components/maplibre/native/NativeLayerRenderer.ts:371
Parameters
map
Map$1
options?
NativeLayerRendererOptions = {}
Returns
NativeLayerRenderer
Properties
lastFeatureCount
lastFeatureCount: number = 0;Defined in: components/maplibre/native/NativeLayerRenderer.ts:298
GeoJSON features uploaded on that realization.
lastRealizeBreakdown
lastRealizeBreakdown: object;Defined in: components/maplibre/native/NativeLayerRenderer.ts:307
Where the last realization's time went, in milliseconds.
Kept because "realize costs 26 ms" is not actionable and "22 of the 26 are in setData" is. Three numbers, taken from a clock that is already running.
bucket
bucket: number;paint
paint: number;upload
upload: number;lastRealizeMs
lastRealizeMs: number = 0;Defined in: components/maplibre/native/NativeLayerRenderer.ts:296
Milliseconds the last geometry realization took. The number the spike is for.
lastVisibleCount
lastVisibleCount: number = 0;Defined in: components/maplibre/native/NativeLayerRenderer.ts:309
How many graphics survived the cull on the last realization.
realizeCount
realizeCount: number = 0;Defined in: components/maplibre/native/NativeLayerRenderer.ts:300
How many times the geometry has been rebuilt since construction.
Accessors
count
Get Signature
get count(): number;Defined in: components/maplibre/native/NativeLayerRenderer.ts:528
Returns
number
selection
Get Signature
get selection(): string | null;Defined in: components/maplibre/native/NativeLayerRenderer.ts:728
The currently selected graphic's id, or null.
Returns
string | null
Methods
add()
add(graphic): void;Defined in: components/maplibre/native/NativeLayerRenderer.ts:463
Parameters
graphic
Returns
void
centerHandleOf()
centerHandleOf(graphic): number;Defined in: components/maplibre/native/NativeLayerRenderer.ts:1112
Which of a graphic's handles is its center, or -1.
Found by position, not by index: the documented order for the point-anchored family is [edge, center], but a range fan emits one handle per band and the corridors emit one per turning point, so an index would be right for one family and wrong for the rest. A handle sitting on the base point is the center in every family that has one.
Parameters
graphic
Returns
number
clear()
clear(): void;Defined in: components/maplibre/native/NativeLayerRenderer.ts:523
Returns
void
destroy()
destroy(): void;Defined in: components/maplibre/native/NativeLayerRenderer.ts:1178
Returns
void
find()
find(id): PaintedGraphic | undefined;Defined in: components/maplibre/native/NativeLayerRenderer.ts:1041
The graphic with this id, or undefined.
Parameters
id
string
Returns
PaintedGraphic | undefined
flush()
flush(): void;Defined in: components/maplibre/native/NativeLayerRenderer.ts:493
Runs any pending rebuild now. For a caller that cannot wait a microtask.
Returns
void
hitTest()
hitTest(point, radiusPx?): PaintedGraphic | undefined;Defined in: components/maplibre/native/NativeLayerRenderer.ts:1084
The graphic under a screen point, or undefined.
radiusPx widens the query into a box, because most of these symbols are line work: a one-pixel query against a two-pixel line asks the user to be more accurate than the symbol is wide.
Parameters
point
x
number
y
number
radiusPx?
number = 5
Returns
PaintedGraphic | undefined
hitTestHandle()
hitTestHandle(point, radiusPx?):
| {
graphic: PaintedGraphic;
index: number;
}
| undefined;Defined in: components/maplibre/native/NativeLayerRenderer.ts:1122
The handle index under a screen point, or -1.
Queried ahead of the graphic body, because a handle sits on the graphic it belongs to and the body would otherwise always win.
Parameters
point
x
number
y
number
radiusPx?
number = 8
Returns
| { graphic: PaintedGraphic; index: number; } | undefined
realize()
realize(): void;Defined in: components/maplibre/native/NativeLayerRenderer.ts:539
Rebuilds every graphic's geometry at the current resolution and uploads it.
This is the whole of path B's per-zoom cost: run the paint functions, bucket the marks, reproject every coordinate to lon/lat, and hand MapLibre new GeoJSON. Timed end to end.
Returns
void
replace()
replace(id, next): void;Defined in: components/maplibre/native/NativeLayerRenderer.ts:1070
Swaps a graphic for a rebuilt version of itself, keeping its place in the draw order.
Order matters because the paint list is emitted in graphic order and MapLibre draws a source's features in the order they arrive: moving an edited graphic to the end would lift it above whatever it used to sit under.
Parameters
id
string
next
Returns
void
select()
select(id): void;Defined in: components/maplibre/native/NativeLayerRenderer.ts:721
Shows the given graphic's handles, or none.
Separate from realize because selection changes far more often than geometry does — a click that only moves the selection has no reason to repaint 200 graphics.
Parameters
id
string | null
Returns
void
setHandleMode()
setHandleMode(active, selectionScoped?): void;Defined in: components/maplibre/native/NativeLayerRenderer.ts:1033
Whether a handle-bearing mode is selected, and whether that mode scopes handles to the selection. Set by the interaction layer, because the mode is its state; the renderer only needs to know whether to draw chrome, and for which graphics.
Parameters
active
boolean
selectionScoped?
boolean = false
Returns
void
setMeasure()
setMeasure(
line,
caption?,
parts?
): void;Defined in: components/maplibre/native/NativeLayerRenderer.ts:744
Shows the radius read-out, or clears it.
A hashed line from the center to the rim with the distance on it, drawn while a circular graphic is sized — the same chrome as OpenLayers' measure feature, and deliberately the same words: both call formatDistance, so the read-out, the other renderer's read-out and the properties dialog cannot disagree about a number the user is comparing.
Editor chrome, so it lives in its own source rather than in the paint buckets: it must never reach snapshot, a sample sweep or a restored map.
Parameters
line
| [ProjectedPosition, ProjectedPosition] | null
caption?
string
parts?
Returns
void
setPreview()
setPreview(graphic): void;Defined in: components/maplibre/native/NativeLayerRenderer.ts:1056
The graphic being drawn, painted but not owned.
Held apart from graphics on purpose. It is not a graphic the map has — it is a picture of the one the next click would create — so it must not appear in a snapshot, in count, or under a hit test, all of which read graphics. Passing it through add/remove would have put it in all three, and a save taken mid-gesture would have persisted a symbol the user never committed to.
Parameters
graphic
PaintedGraphic | null
Returns
void
See
MapLibreInteractions.previewDraw
setSketch()
setSketch(points): void;Defined in: components/maplibre/native/NativeLayerRenderer.ts:787
Sets the line being drawn, or clears it. Repaints only the editor chrome.
Parameters
points
ProjectedPosition[] | null
Returns
void
setVertexHint()
setVertexHint(position): void;Defined in: components/maplibre/native/NativeLayerRenderer.ts:778
Marks where a drag would add a vertex, or clears the mark.
Called on every pointer move in modify mode, so it returns early when nothing changed: repainting the editor marks on each mousemove would rebuild the handle source hundreds of times a second for a dot that has not moved.
Parameters
position
ProjectedPosition | null
Returns
void
snapshot()
snapshot(): FeatureCollection;Defined in: components/maplibre/native/NativeLayerRenderer.ts:510
Every graphic as a plain GeoJSON FeatureCollection — one base feature each, the same shape serializeTacticalGraphics produces on the OpenLayers side.
The base is all that is saved because everything else is derived: the geometry, the decorations and the labels all regenerate from properties.tacticalGraphic, which is the portable description any renderer consumes. Saving the drawn output instead would produce a picture rather than a graphic.
Returns
FeatureCollection