2024.0.02

ImprovementLuciadRIA

RIA-4865
Within the scope of requesting WFS capabilities, WFSCapabilitiesOperation now includes a supportedRequests field. This field informs users about the HTTP request methods ('GET' or 'POST') that the WFS service permits, and provides the corresponding URLs for each operation.

Bug fixLuciadRIA

RIA-4872
Fixed a decoding issue of OGD 3D Tiles 1.1 that could occasionally result in degenerated geometries.

2024.0

2024.0.01

ImprovementLuciadRIA

RIA-4831
When you now set any field on a PointCloudStyle or MeshStyle using the value that is already present, the layer that uses that style will no longer needlessly invalidate itself.

ImprovementLuciadRIA

RIA-4784
Introduced a new generic createGeodesy function in GeodesyFactory, that will return the most optimal Geodesy for any given reference.

Bug fixLuciadRIA

RIA-4851
Fix an issue when blending is enabled on a mesh layer, the mesh becomes red and transparent.

Bug fixLuciadRIA

RIA-4849
Fixed an issue where TileSet3DLayer layers could be invisible while their visibleInTree property was true, in the case that the layer got moved in the layer tree.

Bug fixLuciadRIA

RIA-4764
Fixed an issue where multiple labels were shown for the same feature on a WebGLMap with wrapAroundWorld set to true.

Bug fixLuciadRIA

RIA-4845
FeatureLayer: fixed a memory leak that would occur when an invisible layer was added to the map and model updates were applied while it remained invisible.

Bug fixLuciadRIA

RIA-4819
Fixed the SLD custom functions startAngle and endAngle to take into account rotation inside the reference of the given line shape.

Bug fixLuciadRIA

RIA-4817
Icon3DStyle: when a glTF file without normals was used, the 3D icon would not be correctly visualized when lighting is enabled.

Bug fixLuciadRIA

RIA-4813
Fixed a bug where passing null as value for globeColor in the Map constructor options was treated as undefined. Not setting the globeColor option (or setting it to undefined) results in the globe having a default grey color, whereas setting it to null means no globe will be rendered at all.

2024.0

New featureLuciadRIA

There is a new post-processing filter available for point clouds: Blending. When enabled, it merges overlapping points to increase the visual quality.

New featureLuciadRIA

An Overview Map tool was added to the RIA toolbox. See toolbox/ria/overviewmap/README.md for more information. Basic usage is illustrated in the LuciadRIA Panorama sample.

New featureLuciadRIA

Most of the packages under samples/common have been moved to toolbox/ria. The prefix of their package names also changed from @luciad/ria-sample-common to @luciad/ria-toolbox to clarify that these packages can be reused in your own project. More information can be found in Reuse sample code in your own application

New featureLuciadRIA

It is now possible to connect to the Google Map Tiles API and use its data in your LuciadRIA application. A new class GoogleMapsTileSetModel allows you to create a model for the desired Google Maps data, which you can then add to a LuciadRIA map using a RasterTileSetLayer. For more information, see the Visualize Google 2D Tiles tutorial. Basic usage is illustrated in the LuciadRIA Data Formats sample.

New featureLuciadRIA

You can now visualize OGC 3D Tiles 1.1. Supported functionality:
  • Implicit tiling (both JSON and binary subtrees, no metadata yet).
  • GLB/glTF (using internal, Base64 inlined or external buffers) as payload.
  • Supported glTF 2.0 extensions:
    • KHR_texture_transform
    • KHR_mesh_quantization
    • EXT_meshopt_compression
    • EXT_mesh_features
Note that you can also load glTF data with these extensions as 3D icons.

New featureLuciadRIA

PointCloudStyle now offers a density property. It allows you to paint density maps by setting a ColorMap on the point cloud style. The ColorMap is used to render the point cloud model as a heatmap of the point density. For more information, see Density painting of point cloud data.

New featureLuciadRIA

A Magnifier tool was added to the RIA toolbox. See toolbox/ria/magnifier/README.md for more information. Basic usage is illustrated in the LuciadRIA Monitoring building information sample.

New featureLuciadRIA

Map now exposes a defaultController field, which makes it easier to use custom navigation, hover or select controllers on the map. There are also new DefaultController and NavigateController classes that expose the default map behavior. For more information, see the Managing user input with LuciadRIA controllers tutorial.

New featureLuciadRIA

You can now display point clouds using normal-oriented points. The point orientation setting is enabled by default if the dataset has normal vector values.

ImprovementLuciadRIA

RIA-4747
The createExtrudedShape function now includes a generic type for type inference of baseShape.

ImprovementLuciadRIA

RIA-4259, RIA-4288
You can now cancel editing and creation simply by deactivating the controller on the map: map.controller = null. You can now also revert back to the start of the creation process by calling CreateController.restart(). For more information, check out the Cancelling create and edit interactions how-to article.

ImprovementLuciadRIA

The IFC sample has been modified to also showcase Revit data. The sample has been renamed to IFC / Revit Viewer sample.

ImprovementLuciadRIA

RIA-1330
Fixed an issue where the direction of panning would reverse if you drag a point that's higher than the camera. In these cases, the camera will now move camera vertically instead of horizontally.

ImprovementLuciadRIA

We added an AttributionChanged event in AttributedTileSet, to allow for a re-evaluation of the attributions when they change from within the model (either RasterTileSetModel or OGC3DTilesModel). This could happen because the attribution is loaded alongside the data (which happens in GoogleMapsTileSetModel), or because the attribution is included in the tiles and can change while the data is being loaded (which happens in OGC3DTilesModel for Google 3D Tiles).

ImprovementLuciadRIA

LuciadRIA now uses WASM SIMD instructions in some places to improve performance. Note that this requires browser support. Such support was added in Firefox in version 89, in Edge in version 91, in Chrome in version 91 and in Safari in version 16.4.

ImprovementLuciadRIA

RIA-4696
Added PickController.isPickMultiple(event). When this returns true, PickController.getCandidates returns multiple candidates under the mouse cursor, as opposed to just the closest or top-most candidate. This allows you to implement a controller that can deal with multiple features under the mouse, for example hover multiple features simultaneously or open a pop-up to select one of the candidates under the mouse.

ImprovementLuciadRIA

RIA-4730
You can now also configure the dataType and samplingMode parameters in the WMTSTileSetModelCreateOptions and WMSTileSetModelCreateOptions when creating a WMTSTileSetModel and WMSTileSetModel using the createFromCapabilities and createFromURL methods.

ImprovementLuciadRIA

OGC3DTilesModelDescriptor has two new properties hasPointCloud and hasMesh. These new properties allows you to check if your 3DTiles dataset contains a mesh, a point cloud, or both.

ImprovementLuciadRIA

RIA-4755
The KMLLayer.drapeTarget is now writable to allow runtime changes.

ImprovementLuciadRIA

RIA-4049
The OrientedBox.contains3DPoint and OrientedBox.contains3DCoordinates methods allow you to check whether a specified point is contained within an oriented box.

Bug fixLuciadRIA

RIA-4781
Painting a label on a 3D cartesian map doesn't throw an error anymore.

Bug fixLuciadRIA

RIA-3570, RIA-4744
Fixed an issue where map.getViewToMapTransformation(LocationMode.CLOSEST_SURFACE) used a fallback to terrain, if no closest surface was found. It now correctly fails to transform the point if there is no closest surface.

Bug fixLuciadRIA

RIA-4709

It is now possible to override the getFeatureInfoRoot service URI when creating a WMSTileSetModel and WMSImageModel. getMapRoot and getFeatureInfoRoot are now also available as instance properties on both models.

version property is corrected in WMSCapabilities. It is now of type WMSVersion instead of a string.

Bug fixLuciadRIA

RIA-4369
Fixed a bug where some glTF data with webp textures would not load properly. This could possibly impact 3D icons and 3D Tiles datasets.

Bug fixLuciadRIA

RIA-3573
The balloon's exact position can be now controlled by setting ShowBalloonOptions.anchor when calling Map.showBalloon. Please note that ShowBalloonOptions.object is now deprecated. Also, the map's default behavior to display a balloon when a user selects a feature with a non-point shape on a layer with a balloonContentProvider has changed. Now the balloon is placed exactly in the clicked position of the selected feature, and before, the balloon was placed at the shape's focusPoint.

Bug fixDefense Symbology

RIA-4700

The main geometry type of a number of APP-6A/B Minefield symbols has been changed. These symbols were modeled as polygons, which required the symbol to have at least 3 anchor points to define the symbol's shape. To better align these symbols with the NVG geometry bindings specification, the geometry has now been changed to a point, which requires only a single anchor point to define the symbol's shape. The following symbols are affected by this change:

  • 2.X.2.2.1.6.1 "Planned Minefield"
  • 2.X.2.2.1.6.2 "Completed Minefield"
  • 2.X.2.2.1.6.5 "Antitank (AT) Minefield"
  • 2.X.2.2.1.6.6 "Scatterable Mines"
  • 2.X.2.2.1.6.7 "Antipersonnel (AP) Minefield Reinforced With Scatterable With Self-Destruct Date-Time-Group"
  • 2.X.2.2.1.6.8 "Scatterable Minefield (Antitank Mines) With Self-Destruct Date-Time-Group"
  • 2.X.2.2.1.7 "Executed Volcano Minefield"

The MilitarySymbologyPainter is able to handle both the old shape (multiple points, defining an area) and the new shape (a single point). The behaviour for the old shape remains unchanged. When providing a single point, the corresponding icon will be drawn.

Bug fixDefense Symbology

RIA-4699

The main geometry type of the APP-6A/B symbol 2.X.2.3.1.1.2 "Fire Support Graphics - Fire Support Point - Target - Circular Target" has been changed. This symbol's geometry type was a circle, which required the symbol to have 2 anchor points to define the symbol's shape. The geometry has now been changed to point, which requires only a single anchor point to define the symbol's shape. To better align this symbol with the NVG geometry bindings specification, the geometry has now been changed to a point, which requires only a single anchor point to define the symbol's shape.

The MilitarySymbologyPainter is able to handle both the old shape (two points, defining a circle) and the new shape (a single point). The behaviour for the old shape remains unchanged. When providing a single point, the corresponding icon will be drawn.

Upgrade considerationLuciadRIA

EditController and CreateController no longer update or add features in the model upon de-activation. This is to avoid accidental updates to the model when swapping controllers. Instead, EditController has a new onFinish hook that is called when the edit operation finishes. CreateController still uses the onObjectCreated hook, but it's now called when creation finishes, instead of when the controller deactivates. Finishing an edit operation or a creation can also be forced through a new finish method, which can be called when using a button to immediately apply changes. Note that this method will not deactivate your controller. For more information, consult the API documentation of CreateController and EditController.

Upgrade considerationLuciadRIA

RIA-4372
CreateController now activates its edit handles immediately upon activating, instead of delaying it until the first mouse click or tap. This allows you to use EditHandle to draw things (like snap icons) before the first mouse click or tap.

If you already implemented a creation handle, and you're not using one of create handles in the API (PointCreateHandle, CreateByTemplateHandle, BoundsCreateHandle or PointListCreateHandle), you'll have to check if those still work correctly. Specifically, double check if everything is drawn correctly once the controller activates, before the first click (like a snap icon). If the created shape is drawn too early, you can disable that drawing by overriding EditHandle.shouldPaintFeature().

Upgrade considerationLuciadRIA

CompositeEditHandleConstructorOptions.cascading has been removed. You should use the new CascadingEditHandle class instead. To switch, replace

      new CompositeEditHandle(handles, {cascading: true})
    
with

      new CascadingEditHandle(handles)
    
.

Upgrade considerationLuciadRIA

The zlib library has been updated to 1.3.1.

Upgrade considerationLuciadRIA

The signature of AttributedTileSet.getAttribution() has changed. Previously, it was called multiple times with a single AttributionTileRegion for a given viewpoint. Now, it is called once with the entire list of tile regions. This makes it easier for tileset implementations to fetch attributions asynchronously.

Upgrade considerationLuciadRIA

Both GoogleImageModel and GoogleLayer are being phased out in favor of the new GoogleMapsTileSetModel in a RasterTileSetLayer. In 2024.0, they are being deprecated. While deprecated, they will remain available in all 2024.0 and 2024.1 releases. In the next major release, 2025.0, they will be completely removed.

Upgrade considerationLuciadRIA

RIA-4746
If you implemented an override of PickController.getCandidates(), or if you're calling it yourself, you should take into account the new additional multiple parameter.

Upgrade considerationLuciadRIA

RIA-3707
The createFromUrl and createFromCapabilities methods of WMSTileSetModel and WMSImageModel will now throw an error if you request a model with a coordinate reference that is not supported by the WMS server's capabilities. Before this fix, the factory methods would create a model with a CRS:84 reference if the server did not support the requested coordinate reference.

Upgrade considerationLuciadRIA

A dependency to the meshoptimizer library version 0.20 has been added. This library is used in internal code. No code changes are needed.

Upgrade considerationLuciadRIA

Icon3DStyle.legacyAxis is now set to false by default. You will need to update the rotations applied to your 3D icons or explicitly set the legacyAxis property to true on the styles you are using. See the documentation of Icon3DStyle for more information on the axis system of 3D icons.

Upgrade considerationLuciadRIA

(non-WebGL) Map is being phased out in favor of WebGLMap. In 2024.0, it is being deprecated. While deprecated, it will still remain available in all 2024.0 and 2024.1 releases. In the next major release, 2025.0, it will be completely removed. If you haven't already done so, you should switch to WebGLMap right now. To accomplish this, replace

        import {Map} from "@luciad/ria/view/Map.js";

        const map = new Map(domNode, options);
      
with

        import {WebGLMap} from "@luciad/ria/view/WebGLMap.js";

        const map = new WebGLMap(domNode, options);
      
For more information, check out the Non-webgl Map end-of-life announcement .