2026.1
New featureLuciadRIA
WFSFeatureStore now supports WFS-T, including feature insertion, updating, removal, and locking.
See Edit WFS data with WFS-T for more information.
New featureLuciadRIA
GMLCodec now supports encoding features.
Use encode(cursor) to produce a gml:FeatureCollection document.
New featureLuciadRIA
.pmtiles file read over HTTP
range requests, with no tile server).
See Visualize Mapbox Vector Tiles for more
information.
New featureLuciadRIA
You can now limit the total number of points used by all point cloud layers on a map with the new
RIAMap.performanceHints.maxPointCount property.
LuciadRIA distributes this point budget automatically and continuously across the point cloud layers visible on
the map.
See Tuning performance and visual quality of point clouds.
New featureLuciadRIA
LuciadRIA can now decode and visualize Gaussian splats. Gaussian splatting is a novel scene-representation and 3D rendering technique that uses a large amount of tiny 3D Gaussian primitives ("splats") to create photorealistic views of real-world scenes.

LuciadRIA can consume Gaussian splats as OGC 3D Tiles with glTF payloads that make use of the
KHR_gaussian_splatting or KHR_gaussian_splatting_compression_spz_2 extension of the glTF specification.
You can visualize a Gaussian splatting dataset by constructing a TileSet3DLayer with an OGC3DTilesModel.
Also see TileSet3DLayer.gaussianSplatsStyle, which allows you to customize the styling of the Gaussian splats, using expressions for example,
and to tweak other performance-related settings.
LuciadRIA depends on the libraries tinyply and spz for parsing
ply and spz files respectively.
See Visualize Gaussian splats for more information.
New featureDefense Symbology
RIA-5998
New featureDefense Symbology
We have added full support for the military standard 'APP-6 NATO Joint Military Symbology, Edition E Version 2, October 2025'.
The symbols of the Cyberspace symbol set, which we added previous release have been upgraded from APP-6E E Version 1 to APP-6E Version 2.
You can visualize the APP-6E symbols using the Military Symbology samples, located in samples/symbology within the release directory.

New featureDefense Symbology
- Decoding NVG XML content
- Decoding NVG XML streaming content, of both full sync and partial updates
- Visualization of NVG Features
- Editing of NVG Features, of both shapes and properties
- Creation of NVG Features
- Encoding of NVG XML content
ImprovementLuciadRIA
ImprovementLuciadRIA
ImprovementLuciadRIA
RIA-6036
OrientedBox.getCorners()
and OrientedBox.getCornerPoints() now return a fixed-size tuple of eight
corners, typed as OrientedBoxCorners<Vector3> and
OrientedBoxCorners<Point>, instead of an
Vector3[]
and a Point[]. An oriented box always has exactly eight corners, so callers can
now destructure or index all of them without checking for
undefined.
Existing code keeps working: a tuple is still an array, so it can be iterated, mapped and passed wherever an array of corners was expected.
ImprovementLuciadRIA
Undoable.undo()
and Undoable.redo() can now be
asynchronous. An undoable often updates a model, and such an update can take a request to a server, for
example on a WFS-T store. Returning a promise is optional: an Undoable that applies
its change synchronously returns nothing, as before.
Existing Undoable implementations keep working unchanged.
As a result, UndoManager.undo() and
UndoManager.redo()
now return Promise<void> instead of void. If every
Undoable
in your UndoManager is synchronous, that promise
never rejects, and you can keep calling both methods and ignore what they return. As soon as one of them
can be asynchronous, await it inside a try/catch block, so that you find out whether the operation was
applied and can report a failed model update to your user.
See the Adding undo/redo support to your application guide for details.
ImprovementLuciadRIA
RIA-5971, RIA-5838
ImprovementLuciadRIA
WFSCapabilities.operations now also includes Transaction,
LockFeature and GetFeatureWithLock
when advertised by the WFS server.
The operation names exposed through WFSCapabilities.operations
are now also available as the public WFSOperationName enum.
ImprovementLuciadRIA
WFSFeatureStore
now implements get(id),
so you can retrieve a single feature from the WFS service by id.
ImprovementLuciadRIA
WFSCapabilities
and
WFSCapabilitiesOperation
now expose ows:Constraint values through a new
constraints
property, at the service and operation level respectively.
ImprovementLuciadRIA
RIA-5959
getMapPostRoot, getFeatureInfoPostRoot and
maxRequestURLSize on a WMSTileSetModel and
WMSImageModel. If the request URL to perform a GetMap or GetFeatureInfo is larger than
maxRequestURLSize and the POST roots for these requests are defined, LuciadRIA will use
HTTP POST instead of HTTP GET requests to retrieve the data. In that case, all request parameters are
application/x-www-form-urlencoded in the body of the request.
ImprovementLuciadRIA
RIA-5138
ImprovementLuciadRIA
RIA-5942
ImprovementLuciadRIA
RIAMap.maxMemoryUsageHint (property and constructor option) has been deprecated in favor of
RIAMap.performanceHints.maxMemoryUsage.
ImprovementPanoramic
Bug fixLuciadRIA
RIA-6113
Bug fixLuciadRIA
RIA-6088
FeatureLayer could throw an unexpected error when a query was
interrupted, or a new query was triggered, while the results of a previous query were still being processed.
Bug fixLuciadRIA
Bug fixLuciadRIA
GeoCanvas.drawPanorama) was clipped
incorrectly while layer clipping was active (through a SwipeController, for example) and
the map's displayScale was not 1. The panorama ignored the clip and kept painting across
the whole map.
Bug fixLuciadRIA
RIA-6073
Map.pickAt and
Map.pickClosestObject) ignored the swipe sides of a
SwipeController when the map's displayScale was not 1.
Layers on one side of the swipe line stayed pickable across the whole map, while layers on the other side
could not be picked at all.
Bug fixLuciadRIA
Bug fixLuciadRIA
RIA-6071
Bug fixLuciadRIA
RIA-6069
Bug fixLuciadRIA
RIA-6048
TileSet3DLayer could report no or
another object.
Bug fixLuciadRIA
RIA-6058
Bug fixLuciadRIA
RIA-2913
Bug fixLuciadRIA
Bug fixLuciadRIA
Bug fixLuciadRIA
RIA-5278
whenReady()) after model
updates, before pending clustering work had completed.
Bug fixLuciadRIA
RIA-5408

Bug fixLuciadRIA

Upgrade considerationLuciadRIA
Store is now an abstract class instead of an interface, and its
spatialQuery, get, add,
put and remove operations are no longer optional:
Store and FeatureModel always declare them, so checks such as
typeof store.add === "function" no longer work. Use the new
isOperationSupported(operation) method instead to find out which operations can
actually be called; calling an unsupported one throws a ProgrammingError.
query is always supported.
Adapt a custom store by extending Store and implementing
query. Override the operations the store supports
(spatialQuery, get, add,
put and remove)
and report them from isOperationSupported.
Store now provides the event system itself: it always has an
on method and a store reports its changes with the new
emitStoreChangedEvent method. on only accepts
"StoreChanged", and its callback receives "add",
"update" or "remove" instead of any
string. Another event throws a ProgrammingError. Due to
these changes, a custom store has to extend Store instead of implementing it,
and a store that overrides on must narrow its callback.
Upgrade considerationLuciadRIA
Several map effect properties were renamed or re-expressed. The old names are deprecated but keep working (they are mapped onto the new ones), so existing code keeps rendering the same result.
The FogEffect now expresses fog in metric units instead of the previous unitless values:
densityis deprecated in favor ofvisibility: the distance in meters at which the fog fully obscures the scene near the ground. Note that visibility works inversely to density, a higher visibility means thinner fog.heightFalloffis deprecated in favor ofhalvingHeight: the altitude in meters over which the fog thins by half. Uniform fog, previouslyheightFalloff: 0, is now expressed ashalvingHeight: null.
If you are unsure which values to use, start from the defaults (a visibility of 80000 m
and a halvingHeight of 4000 m) and adjust from there. See the fog effect documentation
for more guidance on choosing metric values.
Other effect properties were renamed only, without a change in meaning:
DepthOfFieldEffect:scalebecomesblurStrength,focalDepthbecomesfocusDistance,focusRangebecomesblurStartDistance, andnoFocusRangebecomesfullBlurDistance.LightScatteringAtmosphere:affectsTerrainbecomesaerialPerspective.
LightScatteringAtmosphere also gained a new mieAnisotropy property,
controlling how tightly the Mie haze clusters around the sun.
Upgrade considerationLuciadRIA
RIA-6019
Store.get()
and FeatureModel.get() no longer require
asynchronous implementations to reject their promises when no feature with the given id exists.
Custom asynchronous Store implementations should instead resolve with
undefined
and reserve rejection for actual failures, such as network or parsing errors.
Callers that relied on a rejected promise to detect a missing feature must now handle a promise resolving with
undefined
instead.
Upgrade considerationLuciadRIA
RIA-5994
Upgrade considerationLuciadRIA
RIA-4563
Touch and mouse input on labels no longer prevents the map from panning, zooming, or picking. The HTML label layer is now transparent to input by default, so a click or touch on label text falls through to the map. Previously, a finger resting on a label blocked the map from receiving touch events.
Interactive label content keeps working: native elements (<a href>,
<button>, <input>, <select>,
<textarea>, <label> and
contenteditable
elements) receive input automatically. To make custom content interactive,
add the lcd-label-interactive CSS class to it. If you previously attached a handler to the
whole label element rather than to an inner control, add that class to the element that should be clickable.
See How to add interactive content to
labels.
Upgrade considerationLuciadRIA
RIA-5919
FeatureLayerConstructorOptions.incrementalRendering constructor option was
removed.
The option is no longer wired to any rendering behavior in GPU maps, so setting it had no effect.
Existing applications can safely remove this property from FeatureLayer construction options.
Upgrade considerationDefense Symbology
The hostile text modifier now accepts only two values:
ENY (the default) and null.
You can use the modifier to disable the ENY indicator: setting it
to null removes the annotation from both the icon label and the stroke
decoration of tactical graphics. Previously, symbols with a hostile affiliation were always
annotated with ENY, regardless of the modifier value.
The change affects all supported military symbology standards.
Upgrade considerationDefense Symbology
MilitarySymbologyCreateController and NVGCreateController
previously selected a feature automatically after creating it. This automatic selection has been removed.
To enable it again, see
NVG creation.
Upgrade considerationDefense Symbology
A number of control measure Line symbols in APP-6D and MIL-STD 2525D no longer display the generic
PL ("phase line") label. Previously these symbols were labeled twice:
once with PL followed by the first
uniqueDesignation modifier, and once with the abbreviation specific to
the symbol followed by the second uniqueDesignation modifier. They are
now labeled only with their own abbreviation, followed by the
first uniqueDesignation modifier.
The change affects the following symbols. All of them belong to symbol set
25 (Control Measure); the symbol code is given for each symbol.
- APP-6D
- Light Line:
110200 - Final Coordination Line:
140700 - Limit Of Advance:
140900 - Line Of Departure:
141100 - Line Of Contact:
140200 - Probable Line Of Deployment:
141200 - Bridgehead Line (BL):
141400 - Holding Line:
141500 - Release Line:
141600
- Light Line:
- MIL-STD-2525D
- Light Line:
110200 - Final Coordination Line:
140700 - Limit Of Advance:
140900 - Line Of Departure / Line Of Contact:
141100 - Line Of Contact:
140200 - Probable Line Of Deployment:
141200 - Bridgehead Line (BL):
141400 - Holding Line (HL):
141500 - Release Line:
141600
- Light Line: