2026.0

New featureLuciadRIA

RIA-4988
The new TileSet3DLayerConstructorOptions#attributeFilter property allows filtering attributes of HSPC datasets. See Tuning performance and visual quality of point clouds.

New featureDefense Symbology

Partial support for the military standard APP-6E has been added. It is now possible to create and visualize MilitarySymbol instances for the APP-6E military standard.

APP-6E support is currently limited to the Cyberspace icon symbols. All supported symbol sets are listed in the supported military standards article .

To visualize the supported symbols, you can run the "Military Symbology Overview" sample, located in samples/symbology/allsymbols within the release directory.

ImprovementLuciadRIA

You can now implement custom a custom Editor that not only edits the shape of a feature, but also its properties. EditHandle and EditController can now emit EditProperty events. By default, these events are not emitted. You need to implement this behavior in your custom editor. You can use this event to create "edit property" undoables in your application. For more information, check the API documentation of EditHandle, EditController, and their new "EditProperty" events.

ImprovementLuciadRIA

UndoManager now emits "Undo" and "Redo" events when an undo or redo operation is performed. Previously, only change events for the undo and redo stack were emitted. You can use these events to perform custom actions in your application when an undo or redo operation occurs.

ImprovementLuciadRIA

RIA-5382, RIA-4993
You can now visualize icons and parameterized points with enhanced transparency by enabling the IconStyle.transparency and ParameterizedPointPainterConstructorOptions.transparency flags respectively.

ImprovementLuciadRIA

Added ImageCaptureUtil to ria-toolbox-core to support reliable map image capture using GPU rendering.

ImprovementLuciadRIA

Added the Infinite-Grid tool to the LuciadRIA Toolbox. It renders a GPU-accelerated, infinite reference grid to 3D maps. See toolbox/ria/infinite-grid/README.md for more information.

ImprovementLuciadRIA

PickController, and its subclasses SelectController and HoverController, now support asynchronous picking. You can enable asynchronous picking by setting the new async option on the controller to true. For more information, check the API documentation of PickController, SelectController and HoverController.

ImprovementLuciadRIA

RIA-4736
Added Camera.viewProjectionMatrix to retrieve the camera’s view–projection matrix.

ImprovementLuciadRIA

Complex Strokes can now load concurrently in the background, which typically results in significantly faster loading times overall in Chromium-based browsers.

ImprovementLuciadRIA

Added support for other HTTP methods (like POST) in UrlStore queries.

ImprovementLuciadRIA

RIAMap now offers asynchronous versions of its picking methods. The methods take the same arguments as their synchronous counterparts and return a Promise. Here is a list of the new methods:
  • RIAMap.pickClosestObjectAsync
  • RIAMap.pickClosestObjectRectangleAsync
  • RIAMap.pickAtAsync
  • RIAMap.pickAtRectangleAsync

ImprovementLuciadRIA

The KMLCodec now decodes ExtendedData into KMLFeature.properties.extendedData. Supported sources: Data, SchemaData and foreign-namespace elements.

ImprovementLuciadRIA

GoogleLayer has been removed from the API. It's recommended to use GoogleMapsTileSetModel instead. Check the Differences between GoogleMapsTileSetModel, GoogleImageModel and GoogleLayer article for more information.

ImprovementLuciadRIA

RIA-5128
LuciadRIA no longer performs its license check at module evaluation time, but rather when a map is first instantiated. This makes it easier to configure the license in your application. Before, you had to ensure the license was correctly configured before any LuciadRIA module was loaded. This could be difficult in some project setups, especially those where you have little to no control over the order in which modules are loaded. Now, you no longer need to worry about module loading order. You just have to make sure the license is configured before you instantiate a map, using the existing\ @luciad/ria/util/License.js API. Existing applications that already configured a LuciadRIA license will continue to work as before. For the optional modules, the license check is performed also at the following API entry points:
  • Constructive Geometry
    • ConstructiveGeometryFactory.createEllipsoidal()
    • ConstructiveGeometryFactory.createSpherical()
    • ConstructiveGeometryFactory.createCartesian()
  • Panoramics:
    • GeoCanvas.drawPanorama()
  • Military Symbology
    • SymbologyProvider.getSymbology()

ImprovementDefense Symbology

The loading time for tactical graphics on a LuciadRIA WebGPU map has been significantly improved due to the possibility of concurrent loading (shader compilation) in the background in Chromium-based browsers. This removes the need to initially render tactical graphics using a fast “skeleton” style, and replacing them with the full style once loaded.

Bug fixLuciadRIA

RIA-5275
Fixed an issue where saveState() and restoreState() calls were not properly delegated in ComposedShapeEditor.

Bug fixLuciadRIA

Fix a bug where selected labels didn't get a higher priority than unselected labels.

Bug fixLuciadRIA

RIA-4534
Coordinate references were considered equal, even when they had differently ordered axes. Now, they need to have the exact same axes and axis ordering in order to be considered equal.

Bug fixLuciadRIA

RIA-5357
Fixed an issue where the application of hover or selection styling could fail for feature layers displayed on 2D maps with wrapAroundWorld set to true when the layer contained features whose geometries crossed the international date line.

Bug fixLuciadRIA

RIA-5262
Fixed a memory leak when using offsetTerrain in precise mode in OGC 3D Tiles.

Bug fixLuciadRIA

RIA-4344
User-configured RIAMap.maxMemoryUsageHint is now correctly applied after a RIAMap.reboot triggered by GPU device loss. Previously, default settings were applied.

Bug fixLuciadRIA

RIA-4289
In some cases, no terrain was painted in a 1-pixel wide zone around the meridian.

Bug fixLuciadRIA

RIA-4549
Fixed issue where shadows would sometimes cause artifacts on the map on Mac OS.

Upgrade considerationLuciadRIA

KMLUtil.createGroundOverlayLayer now returns a promise for FeatureLayer (previously a promise for Layer).

Upgrade considerationLuciadRIA

The non-hardware-accelerated Map implementation has been removed from the API. Both Map and WebGLMap have been deprecated in favor of RIAMap, which leverages WebGPU for hardware-accelerated rendering. It is no longer possible to create non-hardware-accelerated maps or WebGL-based maps. To ease the transition, WebGLMap and Map are now both aliases for the new RIAMap. Any maps created with new Map() or new WebGLMap() will automatically instantiate WebGPU-powered RIAMap instances. We recommend updating your code to use RIAMap directly.

Upgrade considerationLuciadRIA

Because of the switch to WebGPU, LuciadRIA now requires a secure context (HTTPS or localhost) to run in web browsers. This is a requirement imposed by the WebGPU specification and enforced by all major web browsers. If your application is currently served over HTTP, you will need to migrate it to HTTPS to continue using LuciadRIA. For more information, check the Set up a secure context for LuciadRIA article.

Upgrade considerationLuciadRIA

None of the RIAMap.pick methods report features from TileSet3DLayer anymore. The new asynchronous picking methods do report these features and are the recommended approach. To restore synchronous picking support for TileSet3DLayer, enable the synchronousPicking flag in TileSet3DLayerConstructorOptions. For more information, see Picking on 3D Tiles.

Upgrade considerationLuciadRIA

The deprecated MapNavigator methods have been removed from the API. Use the newer pan(), zoom(),

Upgrade considerationLuciadRIA

The built-in LuciadRIA API for creating map borders, axes, and custom drawings on borders has been discontinued. This functionality is now provided by the @luciad/ria-toolbox-map-borders component in the LuciadRIA Toolbox. It offers enhanced support for bordered maps, axis rendering, and custom border drawings.
For more information about this LuciadRIA toolbox component, refer to the How to draw a map with borders article.
For guidance with the migration from the previous API to the LuciadRIA Toolbox, refer to the Migrating to the map-borders component in the LuciadRIA Toolbox article.

Upgrade considerationLuciadRIA

The transition from using WebGL for graphics rendering to WebGPU introduced some visual differences compared to the previous versions of LuciadRIA:
  • Blending of (semi-)transparent colors now happens in linear color space. In previous LuciadRIA versions, it happened in gamma color space (sRGB). This move solves blending artifacts, but it can make blended colors slightly brighter. This is especially noticeable when rendering thin lines or thin text.
    Blending in a linear vs gamma color space
  • Texture sampling now happens in linear color space. In previous LuciadRIA versions, it happened in gamma color space (sRGB). Like for blending, this move solves minor artifacts, but the texture sampling might look slightly differently than before.
    Texture sampling in a linear vs gamma color space
  • Lighting now happens in linear color space. In previous versions, it happened in gamma color space (sRGB). This move results in a harder but more correct lighting gradient. It can make parts of the lit objects brighter or darker than before.
    Lighting in a linear vs gamma color space
  • Image-based lighting now correctly interprets the colors when using a PNG or JPEG as reflection map. In previous versions it interpreted these colors as linear colors, which made the lighting brighter than it should.

Upgrade considerationLuciadRIA

It is no longer possible to set a map-wide luminance threshold in BloomEffect. Instead, you can now configure a luminance threshold on each individual BloomStyle. This means that bloom is now only applied to features for which a BloomStyle has been set. Merely configuring a BloomEffect on a RIAMap will no longer have any effect.

Upgrade considerationLuciadRIA

The following third party libraries have been updated:
  • expected-lite: updated to version 0.9.0
  • glu: updated to version 1.3+7
  • libjpeg: updated to version 9f
  • libwebp: updated to version 1.5.0
The following third party libraries have been dropped:
  • glad
  • protobuf
  • rapidxml-ns

Upgrade considerationLuciadRIA

With the switch from WebGL to WebGPU, the following API changes were made:
  • The RIAMap.webGLContext property has been removed. Has been removed in favor of RIAMap.webGPUDevice, which means listening for WebGL context lost events is no longer supported. Instead, listen to WebGPU device loss events. See Dealing with WebGPU device losses for more information.
  • A new event, "WebGPUDeviceChanged", has been added to the RIAMap API.
  • The RIAMap's "PostRender" event now uses GPUTexture.

Upgrade considerationDefense Symbology

A framework dedicated to the editing of military symbology has been added to LuciadRIA. The LuciadRIA API now includes:

With the introduction of this dedicated military symbology editing framework, the previous default editing mechanism using the ShapeEditor will break. All tactical graphics will be editable as if they were plain Polyline shapes, without any behavior specific to military symbology.

For more information about using this new editing framework, see the migration guide. For more information about the behavior of this new editor for different types of tactical graphics, see the creation and editing article.

Upgrade considerationPanoramic

RIA-5359, RIA-5388
The default maximum range a panorama will be projected (maxRange property on PanoramaStyle) has been changed from 10000 to 100000.