2026.0.03

ImprovementLuciadRIA

RIA-5360
HttpRequestOptions#credentials now also accepts the standard credentials modes defined by the browser's Fetch API ("include", "same-origin" and "omit"), in addition to the previously supported boolean values. This gives you more flexibility for authentication and cross‑origin scenarios. When you set HttpRequestOptions#credentials to a boolean, true maps to "include" and false maps to "same-origin".

ImprovementLuciadRIA

RIA-5788
UrlIconStyle now extends HttpRequestOptions. This allows you to specify HTTP request options such as headers, which is useful, for example, when fetching and drawing icons that require authentication using GeoCanvas#drawIcon.

ImprovementLuciadRIA

RIA-5754
Added a new anchorOffset property to PinStyle to specify the offset at which the pin should start.

ImprovementDefense Symbology

RIA-4214
Fixed an issue with the MIL-STD-2525c "Law Enforcement - Prison" (6.X.3.4.11) symbol where it was not possible to set the symbol's echelon modifier value to "Installation" or "Feint Dummy Installation". This caused the Prison symbol to be rendered without the installation echelon indicator.
Law Enforcement - Prison - echelon variants.
Law Enforcement - Prison - echelon variants.

ImprovementDefense Symbology

RIA-5339
We added the possibility to use "kt" and "kts" next to "kn" as abbreviations for speeds in "knots" inside the military symbol "speedLabel" modifier.

ImprovementDefense Symbology

RIA-4997
The styling of the anchorpoint for non-draped Military symbology icons has been improved. The anchorpoint styling now closely matches the styling of the symbol, it uses the same color scheme for both its outline and fill.
Military Symbol anchorpoint.
Military Symbol anchorpoint.

ImprovementDefense Symbology

RIA-5090
To further align our Luciad products in the way they handle military symbologies, we have added two new properties to the MilSymStyle interface.
  • It is now possible to configure the symbol frame color to be used for icon symbols. This color can be configured using MilSymStyle.symbolFrameColor. The default value is #000000 (black). This custom frame color is ignored in some specific cases where the frame color indicates the affiliation of the symbol.
  • It is now possible to configure the alternate fill color for partially filled icon symbols. This color can be configured using MilSymStyle.alternateFillColor. The default value is rgba(0,0,0,0) (transparent).
An overview of how these new styling options can effect the symbol rendering is shown in the image below.
Military Symbol icon styling options.
Military Symbol icon styling options.

Bug fixLuciadRIA

RIA-5454
When creating a WMSTileSetModel or WMSImageModel, the image format for GetMap requests is now picked up from the capabilities. Before this fix, the image format always defaulted to image/png, which could cause errors when the WMS service did not support that format.

Bug fixLuciadRIA

RIA-5822
Fixed a crash when enabling TileSet3DLayerConstructorOptions.offsetTerrain on certain low-end devices.

Bug fixLuciadRIA

RIA-5786
The LayerTree's NodeMoved and NodeRemoved events are now fired when the map is ready. This fix ensures that these events are triggered in the right order for layer changes that were done before the map was ready.

Bug fixDefense Symbology

RIA-4310

Fixed an issue where width values in some tactical graphics labels were fetched from the "Additional Information" modifier instead of from the "Width" modifier.

Affected symbols:

Standard(s) Set Code Symbol Code Name
APP-6D & MIL-STD-2525d 25 170100 Air Corridor
APP-6D 25 170101 Air Corridor With Multiple Segments
APP-6D & MIL-STD-2525d 25 170200 Low-Level Transit Route
APP-6D & MIL-STD-2525d 25 170300 (Temporary) Minimum-Risk Route
APP-6D & MIL-STD-2525d 25 170400 Safe Lane
APP-6D & MIL-STD-2525d 25 170500 Standard Use Army Aircraft Flight Route (SAAFR)
APP-6D & MIL-STD-2525d 25 170600 Transit Corridors
APP-6D & MIL-STD-2525d 25 170700 Special Corridor / Unmanned Aircraft (UA) Route

Bug fixDefense Symbology

RIA-4311, RIA-5824

Fixed an issue where min/max altitude values in some tactical graphics labels were fetched from the "Additional Information" modifier instead of from the "Altitude/Depth" modifier.

Affected symbols:

Standard(s) Hierarchy Code Name
APP-6A & APP-6B 2.X.2.1.2.2.3 Standard-Use Army Aircraft Flight Route (SAAFR)
APP-6A 2.X.2.3.3.2 Airspace Coordination Area (ACA)

Bug fixDefense Symbology

RIA-4298
Fixed an issue were the possible values of the status modifier of MIL-STD-2525c symbols were not properly configured. All the MIL-STD-2525c symbols were configured with the same set of possible values. The list of possible values of the status modifier are now configured so the symbols have the correct set of possible values based on their branch in the symbol hierarchy, as defined in the MIL-STD-2525c standard.

Bug fixDefense Symbology

RIA-4061

Fixed an issue where the APP-6A and APP-6B "Antitank Obstacle - Obstacles: Tetrahedrons Dragons Teeth and Other Similar Obstacles" symbol did not have an icon representation.

Moreover, it is now possible to configure the icon type of this symbol, it can be represented by a different icon depending on its type: "Fixed And Prefabricated", "Movable" or "Movable And Prefabricated". Unfortunately the APP-6A and APP-6B specifications do not indicate how this obstacle type should be encoded in the symbol.

The approach taken here is similar to other Luciad products: the obstacle type is encoded in the typeOfEquipment text modifier of the symbol. The value should either be one of the following values (casing is not important):

Obstacle Type Possible values
Fixed And Prefabricated "Fixed And Prefabricated", "F", "01"
Movable "Movable", "M", "02"
Movable And Prefabricated "Movable And Prefabricated", "P", "03"
Different icon representations based on typeOfEquipment.
Different icon representations based on typeOfEquipment.

Bug fixDefense Symbology

RIA-5296
A regression has been fixed where some tactical graphics and symbology icons were rendered incorrectly on maps with a display scale not equal to 1.

Bug fixDefense Symbology

RIA-5215
An regression has been fixed where it was no longer possible to edit the width of buffer-like military symbols. An example symbol is the Infiltration Lane in the Military Symbology sample.

Bug fixPanoramic

RIA-5832
Fixed some visual artifacts that could be seen in some cases on Intel GPUs.

Upgrade considerationLuciadRIA

RIA-5827
The following third party libraries have been updated to mitigate known security vulnerabilities:
  • copy-webpack-plugin: updated to version 14.0.0
  • terser-webpack-plugin: updated to version 5.4.0
  • webpack: updated to version 5.105.4
  • webpack-cli: updated to version 6.0.1
  • webpack-dev-server: updated to version 5.2.1
LuciadRIA samples and toolbox components now require NodeJS 20.9.0 and NPM 10 for development.

2026.0

2026.0.02

Bug fixLuciadRIA

RIA-5779
Fixed an issue where the postRender event was not fired after a map reboot.

Bug fixLuciadRIA

RIA-5456
Fixed an issue where density painting of HSPC flickered when fading was enabled.

Bug fixLuciadRIA

RIA-5437
Fixed an issue that sometimes occurred when rapidly removing and adding the first raster layer with an elevation layer present. An error was thrown and no more elevation tiles were loaded after that.

2026.0.01

ImprovementLuciadRIA

RIA-5455
We now expose the Editor used in EditController and CreateController using a getter.

ImprovementLuciadRIA

RIA-4171
It is now possible to load GLTF files that reference data stored in external files or embedded as base64‑encoded content.

ImprovementLuciadRIA

RIA-5392
The GMLCodec now decodes the GML ArcByCenterPoint geometry.

ImprovementLuciadRIA

RIA-5229
The LuciadRIA Symbology Encoding implementation now also supports dynamic property substitution in the ExternalGraphic href attribute. For more information on how to use this functionality, you can read the article Map ExternalGraphics to distinct icon images.

Bug fixLuciadRIA

RIA-5398
Fixed an issue where a selected cluster icon could remain visible after zooming in, even after the cluster expanded into individual features.

Bug fixLuciadRIA

RIA-5438
Fixed an issue where the environment map was not displayed correctly on maps with a large field-of-view.

Bug fixLuciadRIA

RIA-5449
Fixed an issue where 3D tiles could sometimes be painted twice if the dataset contained a mix of meshes and point clouds.

Bug fixLuciadRIA

RIA-5441
Fixed an issue where enabling GraphicsEffects.antiAliasing would result in the map having a black background rather than a transparent one.

Bug fixLuciadRIA

RIA-5436
Fixed an issue where picking on OGC 3D Tiles caused a WebGPU error when Physics-Based Rendering was enabled.

Bug fixLuciadRIA

RIA-5419
Fixed an issue with Map.pickAt() on 3D maps, where sometimes it might return multiple consecutive results for the same feature and layer.

Bug fixLuciadRIA

RIA-5413
Fixed an issue where OGCExpressions like and eq no longer worked as expected when using them in SLD Rule Filters when comparing numbers parsed as strings. Now both like and eq will evaluate to true when comparing a number with a string corresponding to that number. ("1" vs 1).

Bug fixLuciadRIA

RIA-5310
Fixed an issue where the same file was downloaded twice when requesting an OGC3DTilesModel.

Bug fixDefense Symbology

RIA-5435
We fixed an issue where generating a preview image for MIL_STD_2525d icons with Echelon "Team/Crew" using MilitarySymbologyPainter.createSymbolImage lead to a crash.

Bug fixDefense Symbology

RIA-5391
Fixed an issue with the APP-6A/B 'Counterattack By Fire' symbol. The additional arrow at the tip of the symbol has been removed as it is only expected as of APP-6C.
APP-6A/B Counterattack By Fire before the change
APP-6A/B Counterattack By Fire before the change. (in APP-6C it remains like this!)
APP-6A/B Counterattack By Fire after the change
APP-6A/B Counterattack By Fire after the change.

2026.0

New featureLuciadRIA

RIA-5227
You can now use OGCFilterEncoder.createOGCFilterEncoder to create an encoder for your OGCExpression based on the correct WFSVersion. The encoder will use the proper OGC XML filter format.

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 featureLuciadRIA

RIA-5349
WFSFeatureStoreCreateOptions#splitBBOX allows you to choose whether the BBOX filter should be split when it contains the antimeridian. When set to true, two BBOX filters will be created and combined with an OR operator. When set to false, a single BBOX filter crossing the antimeridian will be created.

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-5387
Fix a bug where trajectories would disappear when switching reference while an animation is playing.

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

The constructor options for EditController and CreateController have been aligned with the EditSettings type. To this end, the styles that were previously configured on the options object have been moved to a styles property. For example, the following code:

          const editController = new EditController(layer, feature, {
            handleIconStyle: {
              image: createSquare({
                width: 8,
                height: 8,
                fill: "white",
                stroke: "black",
                strokeWidth: 1
              })
            }
          });
        
should be updated to:

        const editController = new EditController(layer, feature, {
          styles: {
            handleIconStyle: {
              image: createSquare({
                width: 8,
                height: 8,
                fill: "white",
                stroke: "black",
                strokeWidth: 1
              })
            }
          }
        });
      

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(), rotate() and fit() methods instead.

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.