2020.0

2020.0.12

ImprovementLuciadRIA

LuciadRIA now supports HSPC version 12.

ImprovementLuciadRIA

RIA-3193
To increase interoperability with 3rd party WMTS servers, WMTSTileSetModel now also supports tile matrix sets that are partially but not completely structured as a quad-tree.

Bug fixLuciadRIA

RIA-3101
Fixed an issue with drawing repeated labels along a path where the user defined OnPathLabelRepeatOptions.minimumGap option was disregarded.

Bug fixLuciadRIA

RIA-3208
Added the ability to use credentials when creating an OGC3DTilesModel.

Bug fixLuciadRIA

RIA-3211
Fixed performance issue on canvas map with drawing closed shapes with frequently rescaled images as fill patterns.

Bug fixLuciadRIA

RIA-3210
Fixed an issue with creating a complex stroke's icon pattern (PatternFactory.icon), where the IconPatternOptions.credentials property was disregarded.

Bug fixLuciadRIA

RIA-3201
The method signature of the canAddChild method in the LayerTree class has been revised, the type of the positionReference parameter has been changed to LayerTreeNode.

Bug fixLuciadRIA

RIA-2487
Fixed an issue in 3D WebGLMap, where a vector layer in combination with a raster layer would sometimes not display the layers in the correct order. This would happen on maps without a global imagery base-layer.

Bug fixLuciadRIA

RIA-3178
Fixed an issue with the type definition of WMSTileSetModel.getTileURL. The return type did not include null.

Bug fixLuciadRIA

RIA-3184
Fixed an issue with the type definition of requestHeaders in various places of the API. The type definition did not include null.

Bug fixLuciadRIA

RIA-3172
Fixed an issue when using two WebGLMaps in a single page: textures of one map would be used in the other map, causing warning messages and visual glitches.

Bug fixLuciadRIA

RIA-2637
Fixed a documentation issue in Map.viewToMapTransformation. This getter is shorthand for getViewTransformation(LocationMode.TERRAIN), not getViewToMapTransformation(LocationMode.CLOSEST_SURFACE).

Bug fixLuciadRIA

RIA-3169
Fixed a memory leak in ClusteringTransformer when layer's query provider is invalidated and the underlying store returns a cursor with features that have different IDs on each query() request.

Bug fixLuciadRIA

RIA-3157
Fixed a regression in TileSet3DLayer that could potentially lead to badly transformed tile bounds. Also fixed an issue that could lead to tiles being visualized incorrectly in the world.

Bug fixLuciadRIA

RIA-3147
Fixed an issue where PerspectiveCamera.copyAndSet only took into account the options.eye argument if it had a different reference from the camera.

Bug fixLuciadRIA

RIA-3110
Fixed a case where large polygons (> 5x5 degrees) were missing a part of their fill in a 3D view. It was caused by floating point rounding errors, so didn't happen very often. For polygons that did have the problem, the part of fill was missing both for draped and non-draped cases.

Bug fixLuciadRIA

RIA-2984
Fixed an issue with automatic icons displacement in 3D: it should only be calculated based on non-draped icons. This could cause icons to be displaced far off their anchor point when combining draped and non-draped icons.

Bug fixDefense Standards

RIA-3200
In MilitarySymbologyPainter, the typing of the MilitarySymbologyPainterConstructorOptions was corrected in accordance with the documentation.

2020.0.11

Bug fixDefense Standards

RIA-3181
Fixed an issue on IE11 where hatch fill patterns on tactical graphics were missing.

2020.0.10

Bug fixDefense Standards

RIA-3177
Fixed an issue where labels of a military symbol were not drawn by default, but only after the symbol had been selected.

2020.0.08

ImprovementLuciadRIA

RIA-1654

`FeatureLayer` now processes a limited amount of model updates before the next frame, rather that after. This reduces visual jitter when you adjust camera based on a changing `Feature`, for example when following a moving airplane.

If you do more changes than can be processed before the next frame, the rest will be done asynchronously and be visible in later frames only. The amount that can be processed is dependent on the changes and your browser performance.

ImprovementLuciadRIA

RIA-3158
The array-like accessors [0], [1], [2] and length have been removed from Point. These had been deprecated and removed from the API but still showed up on Point objects which could make debugging with certain tools more difficult.

ImprovementLuciadRIA

RIA-3128
Microsoft Edge Chromium (also known as Microsoft Edge Anaheim) was added to the list of supported browsers.

Bug fixLuciadRIA

RIA-3165
Fixed an issue where switching painting a line with begin marker to a line with end marker didn't appear on screen.

Bug fixLuciadRIA

RIA-3162
Fix an issue where MapNavigator.constraints could not be disabled in some cases (e.g. when disabling it through assignment of an object literal: map.mapNavigator.constraints.above = {terrain: false};).

Bug fixLuciadRIA

RIA-3160
Addressed an issue on a non-WebGL map with drawing closed shapes styled with repeated image patterns. Patterns based on ImageIconStyle could be incorrectly used in some situations.

Bug fixLuciadRIA

RIA-3156
Fixed a problem on a software-rendered map with drawing complex polygons where the inner shapes have the same winding orientation as the outer shape. In such a situation a complex polygon was drawn with the fill style covering inner shapes.

2020.0.07

ImprovementLuciadRIA

RIA-3061
Narrowed the type of TileSet3DLayer's model to OGC3DTilesModel | HSPCTilesModel instead of the generic Model.

ImprovementLuciadRIA

RIA-3117
Added an interface for the ReferenceProvider.createCartesianReference options called CreateCartesianReferenceOptions.

Bug fixLuciadRIA

RIA-3127
Prevented TileSet3DLayer from accessing the map after it has been destroyed. This could occur in some rare cases where the map would be destroyed while a new layer is being created.

Bug fixLuciadRIA

RIA-3122
Fixed an issue that broke the complex stroking API in Microsoft Edge Anaheim.

2020.0.06

ImprovementLuciadRIA

RIA-3105
Prevented error from being thrown because asynchronous operations are completing after the WebGL canvas has been destroyed.

ImprovementLuciadRIA

RIA-3102
Updated all samples using sunlight to use UTC time instead of timezone-dependant time. This fixes the issue of the geolocate sample being dark when viewed in locations that were far away from the Marseille dataset. Note that this change only affects sample code.

Bug fixLuciadRIA

RIA-3111
The referenceName property in WMTSCapabilitiesTileMatrixSet that was accidentally deleted in version 2020.0 has been added again.

Bug fixLuciadRIA

RIA-3090
Fixed a problem with drawing grid's parallel lines on 2D maps when map's reference contains the origin of longitude different than 0.

2020.0.05

ImprovementLuciadRIA

Deprecated Layer.getModelBoundsVisibleOnMap. Instead, Map.mapBounds should be used.

Bug fixLuciadRIA

RIA-3075
Fixed an issue for TileSet3DLayer where Layer.getModelBoundsVisibleOnMap would always return null.

2020.0.04

ImprovementLuciadRIA

RIA-3093
The dataType and samplingMode properties have been added to WMSTileSetModel and WMTSTileSetModel. These properties can be used to add custom elevation data, served through WMS or WMTS protocols.

ImprovementLuciadRIA

RIA-3089
Transformed `AxisConfiguration` from a type to an interface.

Bug fixLuciadRIA

RIA-3098
Addressed an issue where a WMTS layer couldn't be added to the map if ContactInfo values were empty in the GetCapabilities response.

Bug fixLuciadRIA

RIA-3088
Fixed a bug in TileSet3DLayer: errors could occur when setting an expression on layers with a geo-location transformation.

Bug fixLuciadRIA

RIA-3087
Fixed a 2020.0 regression where Point.move3D would not move the point's z coordinate if the z argument === 0.

Bug fixLuciadRIA

The factor and targetScale property of the MapNavigatorZoomOptions interface can also be of type [number, number].

Bug fixLuciadRIA

RIA-3082
GMLCodec parses now correctly a GML MultiGeometry shape with multiple inner geometries. Before the fix, the resulting LuciadRIA ComplexPolygon shape contained only a single Polygon shape that corresponded to the first inner GML geometry.

2020.0.03

Bug fixLuciadRIA

RIA-3077
Fixed a type issue in Map.restoreState. The animate option was missing a boolean union type, so you could not use map.restoreState(savedState, {animate: true}); in TypeScript.

Bug fixLuciadRIA

RIA-3080
Fixed an issue when SEPainterFactory throws errors if the symbology encoding data contains a filter definition of type and or or.

Bug fixLuciadRIA

RIA-3067
Options of Affine3DTransformation's createIdentityTransformation are no longer mandatory.

2020.0.02

Bug fixLuciadRIA

RIA-3073
Fixed an issue where WMTSTileSetModel.createFromCapabilities() threw a TypeError with message "Object doesn't support property or method parseFloat" on Internet Explorer 11.

2020.0.01

ImprovementLuciadRIA

RIA-2990
Labels on 3D maps are drawn with the culling effect, which means that labels positioned close the horizon are not drawn.

ImprovementLuciadRIA

RIA-3017
The WMTSTileSetModel can now also include dimension request parameters in tile requests. You can configure the dimensions at construction time by setting the dimensions construction parameter, or at runtime by modifying the dimension property on the WMTSTileSetModel instance. Please refer to the reference documentation for more details.

ImprovementLuciadRIA

RIA-3016
WMS Capabilities information now contains information about user-defined symbolization. Refer to the API reference documentation of the userDefinedSymbolization property of the WMSCapabilities class for more information.

ImprovementLuciadRIA

RIA-2992
Features are now decoded lazily in incremental way when processing query cursors. That way handling big data sets is smoother, especially when using the spatial loading strategy.

Bug fixLuciadRIA

RIA-3056
Fixed an issue where WFSFeatureStore.createFromCapability's error handling. An undefined variable error was thrown instead of the intended error.

Bug fixLuciadRIA

RIA-3052
Fixed an issue when a feature layer is never reported as ready by whenReady(), if the layer's query provider uses QueryProvider.QUERY_NONE. In such a situation the query status of layer's workingSet was QueryStatus.QUERY_PENDING and now it is promoted to QueryStatus.QUERY_FINISHED.

Bug fixLuciadRIA

RIA-3025
Removed polyfill of HTML DOM children property. The polyfill was used for no longer supported browser Internet Explorer 9.

Bug fixLuciadRIA

RIA-2999
Fixed an issue on WebGLMap where labels created by a controller flicker. This situation happened when label's position changed on controller's interaction with the map.

Bug fixLuciadRIA

RIA-2993
Fixed an issue with resolving image urls for balloon's contents on a KML Layer.

Bug fixLuciadRIA

RIA-3018
Fixed a memory leak issue when using drawText for many features that update regularly.

Bug fixLuciadRIA

RIA-2962
Fixed a problem with drawing grid's parallel lines on 2D maps when LonLatGrid is configured with a deltaLon value for which the expression: 180 modulo deltaLon evaluates to a non-0 value. In such cases grid's parallel lines were partially drawn on 2D maps.

Bug fixLuciadRIA

RIA-2991
Fixed performance regression when drawing labels.

Bug fixLuciadRIA

RIA-2920
Fixed an issue in tessellation of extruded shapes. In some cases, the outline didn't match the fill, and either or both could be missing a small part.

2020.0

New featureLuciadRIA

LuciadRIA is now shipped as a set of ES6 modules, packaged as npm packages. You can find the npm packages in the packages/es6 directory of the release.

Once you've installed the packages into an npm registry, you can use install and use them like any other npm package:

LuciadRIA installation using npm
Use npm install to install LuciadRIA packages

The packages include Typescript definition files with documentation for all the public API.

ImprovementLuciadRIA

Added an option to TileSet3DLayer constructor to allow the offsetTerrain to be specified with a desired offset in meters. Have a look at the constructor option in TileSet3DLayerConstructorOptions for more information.

ImprovementLuciadRIA

You can now instruct LuciadRIA to load a license file by providing a choice of URL locations using License.loadLicenseFromUrls API.

ImprovementLuciadRIA

RIA-2908
It is now possible to perform GetFeatureInfo requests on WMS server versions 1.3.0, 1.1.1, 1.1.0 and 1.0.0. Previously GetFeatureInfo requests were only supported for WMS version 1.3.0.

ImprovementLuciadRIA

The LuciadRIA release now has improved support for integrating it in a TypeScript project. The 'luciad.d.ts' file has been removed, instead now each module has it's own definition file. These new definition files are derived directly from TypeScript code, as a result they are more robust than the previous 'luciad.d.ts' file. See the how-to article on TypeScript to get started.

ImprovementLuciadRIA

Added various options to manipulate the behavior of TileSet3DLayer. You can now set a TileLoadingStrategy that influences how tiles are loaded. It is also possible to change the duration of the tile fading-in and fading-out animation, or to turn it off entirely, using TileSet3DLayer.fadingTime. You can also now specify whether a 3D dataset is part of the terrain, using TileSet3DLayer.isPartOfTerrain. For more details, please consult the relevant API documentation.

ImprovementLuciadRIA

When styling mesh data of TileSet3DLayers with MeshStyle, you can now use a default color expression. This is for example useful if you want to create a color expression that is in some way based on the texture color. See MeshStyle for more details.

ImprovementLuciadRIA

We have added a referenceType property on ths CoordinateReference class. That property, as its name indicates represents the type of reference it is. Its value is one of the values in the ReferenceType enum.

ImprovementLuciadRIA

You can now also configure the ambient and diffuse color of the lights. See LightEffect for more details.

ImprovementLuciadRIA

We have added support for the HSPC point cloud format. You can use a HSPCTilesModel to create a model, and visualize the result of that using TileSet3DLayer.

ImprovementLuciadRIA

LuciadRIA API has been converted to ES6 (ECMAScript 2015) modules. In this context, the following changes were made.
  • The LuciadRIA API is now distributed as ES6 modules. For backward compatibility, the AMD version of the API is still included. In order to run LuciadRIA on a browser that does not support ES6 module loading, the code has to be bundled. For the LuciadRIA samples this is done using webpack, as demonstrated in samples/common/webpack.config.
  • LuciadRIA folder structure has been changed to match npm style. LuciadRIA classes are located under the packages folder. AMD classes can be found in the packages/amd folder and ES6 classes can be found in the packages/es6 folder. LuciadRIA, Defense Symbology and Advanced GIS Engine modules are stored in their own directories separetely.
  • The samples have also been converted to the ES6 module structure. A ready-to-run version is already included in the release and can be accessed by running the startSampleServer.[sh|bat] script. If you want to make changes to the samples, you can modify the source code and run the webpack dev server to inspect your changes. See the developer guide for more information the samples.

ImprovementLuciadRIA

You can now make a selection in a TileSet3DLayer if the underlying dataset contains metadata. For styling, MeshStyle now supports a selected color expression. This convenience expression will be used when a part of a TileSet3DLayer is selected. Have a look at the documentation of the TileSet3DLayer class, or the RIA developer guide for more information.

ImprovementLuciadRIA

TileSet3DLayer now supports setting manually the time tiles will take to fade in / out when appearing / disappearing. More information can be found by taking a look at TileSet3DLayer#fadingTime.

ImprovementLuciadRIA

IconStyle and ShapeStyle now allow shapes to be painted in 3D in front of other 3D data if they are normally obscured. A new property occlusionMode allows you to configure this:
  • Mode OcclusionMode.VISIBLE_ONLY shows only the part of a shape that is not obscured by other 3D data. This is the default.
  • Mode OcclusionMode.ALWAYS_VISIBLE shows the entire shape even if behind by other 3D data. The shape will appear in front of other objects.
  • Mode OcclusionMode.OCCLUDED_ONLY shows only the part of the shape that is behind other 3D data. You typically use this to display obscured shapes in combination with another style that uses "VISIBLE" mode.
See IconStyle.occlusionMode or ShapeStyle.occlusionMode for details and limitations.

ImprovementLuciadRIA

Added new LocationMode to Map.getViewToMapTransformation(). The new mode is LocationMode.ELLIPSOID, and it allows you to transform a position in view coordinates onto the ellipsoid of the map reference, at an optionally specified height offset. This functionality is useful for creating controllers that require event handling on a fixed-height plane, such as dragging an editing handle perpendicular to the globe. Note that this new LocationMode only has effect in on a 3D map. In a 2D map, there is no height information on the map, so all LocationMode values will return the same result.

ImprovementLuciadRIA

Added new cartesian reference with identifier "LUCIAD:XYZ". This cartesian reference is 3D, with its axes defined in meters. The X-axis points to the east, the Y-axis points to the north, and the Z-axis points upward. The cartesian reference is not georeferenced, meaning that it can not be positioned on the globe by itself. To position a model with the "LUCIAD:XYZ" reference on the globe, have a look at Affine3DTransformation.

ImprovementLuciadRIA

OGC3DTilesModel now uses the LUCIAD:XYZ reference for datasets that are not georeferenced. In order to visualize these datasets, you will have to apply an Affine3DTransformation on the resulting TileSet3DLayer. On top of this, both the TileSet3DLayer and OGC3DTilesModel now have a box3d property that contains a tight-fitting non-axis aligned box around the dataset. On a model level, this will be in the reference of the dataset, which is potentially LUCIAD:XYZ. On a layer level, this will be the output reference of the layer transformation (See Affine3DTransformation).

ImprovementLuciadRIA

Added new geolocation sample that lets you position unreferenced TileSet3DLayer layers on the map. The sample uses a GeoLocationController in combination with an Affine3DTransformation to apply a runtime transformation on the TileSet3DLayer it is controlling.

ImprovementLuciadRIA

Added Affine3DTransformation to the API. This transformation encapsulates an affine transformation that can be used to position, scale and rotate a TileSet3DLayer.

ImprovementLuciadRIA

LuciadRIA now supports anti-aliasing. For more details, see map.effects.antiAliasing.

ImprovementLuciadRIA

LuciadRIA now supports the eye-dome lighting (EDL) technique to improve depth perception in 3D data sets. For more details, see map.effects.eyeDomeLighting and luciad/view/EyeDomeLightingEffect. See also the section "Configuring WebGL Map effects" in the LuciadRIA Developer's Guide.

ImprovementLuciadRIA

When styling mesh data of TileSet3DLayers with MeshStyle, it is now possible to configure a visibility expression and displacement expression. With visibility expressions you can make (parts of) your mesh visible or invisible based on available attributes and parameters. The displacement expression allows you to translate (parts of) the mesh. See TileSet3DLayer.meshStyle and MeshStyle for details and limitations.

Bug fixLuciadRIA

RIA-2976
Fixed an issue where adding a world covering WMSTileSetModel in a WebMercator reference resulted in missing terrain data near the dateline.

Upgrade considerationLuciadRIA

Previously the LuciadRIA release contained a single TypeScript definition file (luciad.d.ts). From now on each module has its own definition file. These new definition files may contain some incompatible changes in regards with the 'luciad.d.ts' file. The following incompatibilities might affect your existing TypeScript project:
  • Namespaces are no longer used to differentiate our modules. To handle this change you will need to update your type imports.
  • Names of several interfaces have changed to have a more consistent naming across the LuciadRIA API. Interfaces for option objects used in constructors have the following naming scheme: {ClassName}ConstructorOptions, for example FeatureModelConstructorOptions. For other option objects, the interface name will always end with 'Options'.
  • Some class and interface properties are now optional. This is because the old 'luciad.d.ts' file contained some bugs, causing it to be out of sync with the actual API. This implies that you might need to add an undefined check before using these properties.
  • Our definition files are generated with non-nullable types, as a result of this our typing now explicitly contains null and undefined.
Note that all these changes will result in compile errors generated by the TypeScript compiler.

Upgrade considerationLuciadRIA

AnimationManager no longer implements Evented. This was a documentation error, as there were no events for which a callback could be registered.

Upgrade considerationLuciadRIA

The shape creation functions on ShapeFactory without georeference as first argument have been removed. These functions were already deprecated since 2015.0. You can use the functions with the same name and pass a null georeference as first argument.

Upgrade considerationLuciadRIA

The following changes were made in the LuciadRIA Evented API.
  • The Evented class has been renamed EventedSupport and the Evented class has been changed to an interface. Custom classes that extend the old Evented class must now implement the Evented interface. Classes that implement the Evented interface can delegate requests to the EventedSupport class. We recommend using the delegate pattern for this.
  • The emit function has been deleted from the Evented interface. As such, users will not be able to emit any events in one of the LuciadRIA classes anymore; For example, the 'ModelChanged' event in the FeatureModel cannot be triggered by users, but is automatically triggered by LuciadRIA when an object is added to the model.
  • The static functions on and once are also no longer available on Evented since this is now an interface. These functions are however available on the new EventedSupport
For more information on how to use the LuciadRIA Evented API, please see the LuciadRIA developer guide.

Upgrade considerationLuciadRIA

Changed the behavior of util/Promise#when to always wrap the result in a promise. Previously this was not always done for optimization purposes. Promise.when(value, resolvedCallback, errorCallback) now has been deprecated in favor of using Promise.resolve(value) .then(resolvedCallback).catch(errorCallback) as this is equivalent and doesn't need the LuciadRIA extension of Promise.

Upgrade considerationLuciadRIA

Our internal polyfills for Map, Set, Object, Promise and performance have been removed as these are now supported in the most used browsers (except for IE 11). If you want to deploy LuciadRIA on a browser without support for these classes, consider using core-js as illustrated in our samples (entry point in samples/common/webpack.config).
Note that we still expose our own util/Promise class that extends from the native Promise.

Upgrade considerationLuciadRIA

ExpressionFactory#true and ExpressionFactory#false have been removed from the public API as those function names are reserved keywords and can not be used as names for ES6 module exports. These expressions can be replaced by ExpressionFactory.boolean(true) and ExpressionFactory.boolean(false).

2019.1

2019.1.11

ImprovementLuciadRIA

RIA-2904
You can now instruct the GMLCodec how it should react when an unsupported geometry type is detected in the decoding data. For more information please consult GMLCodec constructor API.

ImprovementLuciadRIA

RIA-2898
Improvement in GMLCodec to detect the number of coordinate values used in a position. The optional srsDimension attribute used on top level geometry element can be now correctly interpreted (default placement is posList element).

ImprovementLuciadRIA

RIA-2149
Improved documentation about what to do when TileSet3DLayer's dataset is too detailed.

ImprovementLuciadRIA

RIA-2699
In some cases, the GPU memory used by a TileSet3DLayer could temporarily exceed the maximum memory configured on a WebGLMap. While usually harmless, this could cause your browser to crash or stop the webpage. This has been resolved. Note that if your TileSet3DLayer needs more memory than allowed, it will automatically reduce quality, and log this on the browser console. See WebGLMap.maxMemoryUsageHint for more information on how to configure your map's memory settings. See TileSet3DLayer.qualityFactor to adjust amount of detail that is loaded pro-actively.

ImprovementLuciadRIA

RIA-1809
The ParameterizedPointPainter now supports labels. To do so, implement paintLabel in your painter in the same way as for other FeaturePainters. Note that the labels are evaluated and drawn using the normal cpu-based algorithms.

ImprovementLuciadRIA

RIA-2473
You can now override a RasterTileSetModel's getTileData method to submit compressed (png) or raw images in ArrayBuffers next to HTML5 Image objects. For more information please refer to the RasterTileSetModel, PixelFormat and TileData API documentations.

ImprovementLuciadRIA

RIA-1516
WFSFeatureStore auto-detects the Codec object to use based on constructor's outputFormat property if codec is not provided.

ImprovementLuciadRIA

RIA-2783
3D Tiles meshes now use the color given in their material, provided it's a B3DM with an internal GlTF version 2. The used data is given through pbrMetallicRoughness.baseColorFactor in the material linked to a Primitive.

ImprovementLuciadRIA

RIA-2745
Improved documentation to specify that color expressions in TileSet3DLayer have their alpha disregarded (no transparency possible).

ImprovementLuciadRIA

RIA-2776
Improved some of the custom camera controls in the camera sample. The OrbitController and FirstPersonController now both use map.cameraAnimationKey as a the key for animations. This allows for better interactions with any other animations in the map. Both of the controllers now also use performance instead of Date for more accurate animations. The FirstPersonController has also been enhanced in how it handles key presses: It now treats each of the 6 directions as a separate values. This prevents the problem of sticky keys when rapidly navigating around the map. We have also enhanced the effect of holding down shift to accelerate the camera.

ImprovementLuciadRIA

RIA-2765
Added basic support for underground visualization. You can use map.mapNavigator.constraints = { above: { terrain: false, mesh: false } }; to allow navigation to go under the terrain. You can also use map.camera yourself to do your own navigation underground. Note that there are various technical limitations, in particular:
  • Draped content will not show up properly when underground.
  • Some imagery tiles can be missing underground, near the "horizon".
  • When disabling or re-enabling the above terrain constraint, the bottom-most layer will reload its data.
See also release note on transparent terrain below.

ImprovementLuciadRIA

RIA-2762
Added support for transparent terrain on a WebGLMap in 3D for the bottom-most RasterTileSetLayer. You can use myRasterTileSetLayer.rasterStyle = {alpha: 0.5};. Before, the bottom-most imagery layer could not be made transparent in 3D. Note that there are still various technical limitations, in particular:
  • When zoomed out, the back of the globe may be visible through the front.
  • When switching the fully opaque to transparent or back, the layer will reload its data.
See also release note on underground visualization above.

ImprovementLuciadRIA

RIA-2758
Invalidating a RasterTileSetModel on a WebGLMap no longer clears the layer map before loading new tiles. Instead the map keeps rendering the old tiles until the new tiles are loaded. This was already the case for non-WebGL Maps, but now it is also the case for WebGLMap.

ImprovementLuciadRIA

RIA-2724
Reduced some aliasing artifacts caused by the ambient occlusion graphical effect.

ImprovementLuciadRIA

RIA-2738
You can now set HTTP headers and credentials that will be sent with every HTTP request to WMTS service, using WMTSTileSetModel constructor's options: requestHeaders and credentials. Also, the style and format options are optional now. Form more information please consult WMTSTileSetModel API.

ImprovementLuciadRIA

RIA-949
WFSFeatureStore can be instantiated with an optional geometryName, which refers to the property that should be used along with the BBOX spatial filter to retrieve a feature's geometry.

ImprovementLuciadRIA

RIA-2636
The visual style of the ambient occlusion graphical effect has been modified to emphasize corners and other areas where light can get trapped.

ImprovementLuciadRIA

It is possible to request images from a WMTS service using WMTSTileSetModel API. Previously the WMTSTileSetModel module was a sample code and now it is exposed in the API.

ImprovementLuciadRIA

The following improvements have been made to the Symbology Encoding painter.
  • The painter supports the following elements for TextSymbolizer: IsAligned, IsRepeated, Gap, InitialGap, PerpendicularOffset.
  • It now supports Rotation, AnchorPoint and Opacity for Graphic elements.
  • Support for GraphicStroke elements has been added.
  • The painter can handle the uom attribute from LineSymbolizer and PolygonSymbolizer elements to draw lines in world size units.
  • It now supports Mark, Size, Rotation and Opacity for Graphic elements used in a GraphicFill element.
  • Added support for the SVG format, SVG images can now be used with both InlineContent and OnlineResource elements.

ImprovementLuciadRIA

To make connecting to OGC services (WFS, WMS, WMTS) and the LuciadFusion LTS service easier, LuciadRIA now includes capabilities parsing. You can access the list of offered data sets in a capabilities response from the service, and automatically detect all settings (version, tile dimensions, encoding formats, and more) for the creation of a model or store. The functionality to access the capabilities is available in the new classes WFSCapabilities, WMSCapabilities, WMTSCapabilities and LTSCapabilities in the package luciad.model.capabilities. To expedite the creation of a model / store for these web services, the following convenience methods have been added to WFSFeatureStore, WMSImageModel, WMSTileSetModel, WMTSTileSetModel and FusionTileSetModel:
  • A createFromCapabilities method accepting the capabilities and the name of the desired data set
  • A createFromURL method accepting the service URL and the name of the desired data set

ImprovementLuciadRIA

You can now implement and schedule your own animations via the new Animation and AnimationManager. Animations can be used for various use case e.g. camera animations, moving objects, etc. For more information see the JSDoc of Animation and AnimationManager.

ImprovementLuciadRIA

Improved performance and stability of 3D Tiles (TileSet3DLayer) in various ways:
  • Loading times have been improved by using tight-fitting oriented bounds for tile selection. This means less tiles will be downloaded.
  • Framerate while loading has been improved by removing and optimizing some cpu-intensive operations. This also improves loading latencies.
  • Overall memory consumption was significantly reduced.
  • TileSet3DLayer follows the map's allowed memory usage (see WebGLMap.maxMemoryUsageHint, and other release note below), resulting in caching that adapts to the dataset, as well as avoiding crashes.

ImprovementLuciadRIA

The EPSG:4979 coordinate reference is now supported. Use the ReferenceProvider#getReference method to retrieve the reference.

ImprovementLuciadRIA

It is now possible to customize the default coordinate axis order policy applied by the GML, GeoJson, WFS and WMS components. The classes GMLCodec, GeoJsonCodec, WFSFeatureStore, WMSImageModel and WMSTileSetModel can be instantiated with a swapAxes option that dictates for which references the default coordinate axis order should be swapped.

ImprovementLuciadRIA

RIA-2582
LoadSpatially loading strategy uses the multi-scale approach on 3D maps when user defines on the layer a minimum scale or a maximum scale at which the layer should render features (minimumScale and maximumScale options of the FeatureLayer constructor). For more information please refer to the LoadSpatially API documentation.

ImprovementLuciadRIA

RIA-2554
ShapeList#contains2DCoordinates no longer throws an error and instead returns false for an empty ShapeList

ImprovementLuciadRIA

You can now change the size, rotation and opacity of images used as fill for shapes. For more information see the JSdoc for FillStyle.

ImprovementLuciadRIA

You can now toggle and configure built-in camera constraints using MapNavigator.constraints. Consult the JSdoc of MapNavigatorConstraints for more information.

ImprovementLuciadRIA

You can use new Camera API to manipulate the map's camera. Consult the JSdoc of the luciad.view.camera package, and Map.camera for more information.

ImprovementLuciadRIA

You can now create sun lights which cast shadows for 3D WebGLMaps. See luciad/view/Map#effects and luciad/view/LightEffect for more details. The shadows are cast from all 3D content, on all 3D content.

ImprovementLuciadRIA

The raster tile loading for WebGLMap has been improved. Previously imagery and/or elevation tiles would be loaded incrementally (i.e. from low detail to the detail required for the current map scale). Because of this incremental loading, it could take some time before the view stabilized and the required raster detail level was shown on the map. To improve this the WebGLMap will now request the required tiles for the current map scale first. This results in the view stabilizing and displaying the required imagery/elevation for the current map scale more quickly. Note that if elevation data is being loaded from a slow server, you might see small gaps between tiles. These automatically go away when the elevation data is fully loaded.

ImprovementLuciadRIA

WebGLMap now automatically limits the amount of memory used by its internal data structures, both CPU/RAM usage as well as GPU/video RAM usage. By default, this limit is 500 MB CPU and 1GB GPU, but you can configure this limit yourself, see WebGLMap.maxMemoryUsageHint or WebGLMap constructor. These hints only apply to internal data managed by the WebGLMap, not to any user data present in the application. For more information and notes, see the documentation of WebGLMap.maxMemoryUsageHint.

ImprovementLuciadRIA

PatternFactory.icon offers to create a complex stroke's icon pattern with additional properties: rotation, opacity and size.

ImprovementLuciadRIA

RIA-2334
The scale indicator in the sample code has been enabled again, but only on 2D maps, as it makes no sense for 3D maps.

ImprovementLuciadRIA

RIA-2511
Invalidating a RasterTileSetModel on a non-WebGL accelerated map no longer clears the layer map before loading new tiles. Instead the map keeps rendering the old tiles until the new tiles are loaded.

ImprovementLuciadRIA

LuciadRIA allows drawing lines expressed in world size units (e.g. meters, feet) using LineStyle.uom API. The following style properties are taken into account when drawing world-size lines: line width, dash pattern, dash pattern offset and line marker's size and width.

ImprovementLuciadRIA

RIA-2514
LayerTreeNode#whenReady now resolves to the LayerTreeNode instead of to undefined

ImprovementLuciadRIA

RIA-2341
LuciadRIA now exposes information on axes ordering through CoordinateReference.axisInformation. This information can be used to determine the order in which to decode and encode coordinates, for example when implementing a Codec.

ImprovementLuciadRIA

Added support to change the opacity of icons for both 2D and 3D maps. You can now change the opacity value of an icon through the IconStyle.opacity property.

ImprovementLuciadRIA

RIA-2499
Ignoring url parameters in 3d tiles metadata content.url field to help with server requests.

ImprovementLuciadRIA

RIA-2498
Missing geometric error parsing in 3d tiles now defaulting to a node's parent's one instead of 0. This should fix the loading of some tilesets.

ImprovementLuciadRIA

RIA-2496
Improved memory consumption for 3d Tiles with textures.

ImprovementLuciadRIA

LuciadRIA now offers ambient occlusion and depth of field graphical effects on 3D WebGL maps. See Map.effects, GraphicEffects.ambientOcclusion and GraphicEffects.depthOfField for details. When enabled, they are applied on all the data on the map.

ImprovementLuciadRIA

LuciadRIA now allows styling mesh data of TileSet3DLayers with MeshStyle. This can be used for example to override the color of OGC 3DTiles meshes. Currently, color styling expressions are limited to either a fixed color, the color in the mesh texture, or an expression based on the vertex position. Additionally, you can use MeshStyle to enable lighting on your data, based on the lighting configured on your map through Map.effects.light. The lighting uses the normal vectors present in your data. If the data has no normals, local derivatives are used instead. See TileSet3DLayer.meshStyle and MeshStyle for details and limitations.

ImprovementLuciadRIA

RIA-2079
Added support to change the color of the globe for a 3D WebGL map. This new property can be set with Map.globeColor.

ImprovementLuciadRIA

RIA-2490
It is now possible to control the order of drawing airspace features by using AirspaceStyle.zOrder property.

ImprovementLuciadRIA

RIA-2486
Non-indexed meshes now supported in 3d tiles B3DM files.

ImprovementLuciadRIA

Added SVG image support for both 2D and 3D maps, SVG images can now be used with IconStyle and FillStyle.

ImprovementLuciadRIA

RIA-2235
You can now set HTTP headers / credentials that RIA will send with every AJAX request, by using the requestHeaders and credentials properties on UrlTileSetModel, WMSImageModel, GoogleImageModel, UrlStore, WFSFeatureStore and OGC3DTilesModel. For more information, consult the JSdoc.

ImprovementLuciadRIA

Enhancements when drawing labels: - repeat labels along a path (OnPathLabelStyle.repeat), - place labels away from a line (OnPathLabelStyle.perpendicularOffset)

ImprovementLuciadRIA

RIA-2451
Documented that BasicCreateController does not support creation of complex polygons, shape lists and extruded shapes. Also introduced runtime checks for these cases.

ImprovementLuciadRIA

LuciadRIA now offers AirspacePainter API. It allows you to use an inner border, outer border and outline style to draw closed shapes that represent airspaces.

ImprovementLuciadRIA

RIA-2342
ShapeProvider exposes methods from the Evented object. You can emit custom events and register event listeners.

ImprovementLuciadRIA

RIA-2417
The timeout for loading AMD modules in RIA samples has been disabled. This timeout caused issues when opening a RIA sample on a slow connection.

ImprovementLuciadRIA

RIA-2276
MapNavigator.fit now does tighter fits on large geodetic bounds in 3D.

ImprovementLuciadRIA

RIA-2307
OGC 3D Tiles parsing is more robust, by having an improved behaviour when parsing GlTF scenes.

ImprovementLuciadRIA

RIA-2410
OGC 3D Tiles parsing is more robust, by enabling GlTF accessors to have optional byteOffset field.

ImprovementLuciadRIA

RIA-2148
OGC 3D Tiles have a better lighting integration for meshes, helping visualization of small details when textures are missing.

ImprovementLuciadRIA

You can now use images as fill for shapes on a WebGLMap. For more information, see the JSdoc for FillStyle.image and FillStyle.url.

ImprovementLuciadRIA

RIA-2208
3D tiles can now handle the "ADD" refinement set in tileset.json files.

ImprovementLuciadRIA

RIA-2143
Improved 3d tiles parsing and rendering to be able to handle multi-mesh GlTF files.

ImprovementLuciadRIA

RIA-2328
Point cloud visualisation : added a security when deducing point size for rendering. This should improve visualization with datasets having a geometric error not related to the actual point density.

ImprovementLuciadRIA

RIA-2287
Fixed a shape discretization issue when a vertical view map contains layers with various but compatible Cartesian references.

ImprovementLuciadRIA

RIA-2255
Improved tile selection in 3D for very large low level tiles. This solves some of the blurry tiles that would sometimes occur when panning to some specific camera angles.

ImprovementLuciadRIA

LoadSpatially on 3D maps now uses the multi-scale approach to load features for each visible scale level zone as defined in QueryProvider. This improvement limits the memory usage and reduces the visual clutter for less detailed zones.

ImprovementLuciadRIA

Use the LoadSpatially.shouldUpdate API to decide if an existing feature should be replaced by a feature that comes from a processed query cursor. You can implement a custom shouldUpdate predicate to control how changes to features should be handled by LuciadRIA.

ImprovementLuciadRIA

RIA-2307
GlTF parsing in B3DM for 3D Tiles will not require a 'scene' field in its json content anymore.

ImprovementLuciadRIA

LuciadRIA now exposes a 'Complex Stroke' API. Using this API, you can stroke a line with repeated patterns and decorations. For example, a waved line with an arrow at the end and some text in the middle of the line. For more information, see the JSdoc for the modules in luciad/view/style/complexstroke, most notably ComplexStrokedLineStyle and PatternFactory.

ImprovementLuciadRIA

RIA-2299
3D Tiles parser is more lenient in some cases when parsing metadata.

ImprovementLuciadRIA

RIA-2296
You can now draw begin- and endMarker lines on a WebGLMap. For more information, see the JSdoc for LineStyle.beginMarker and LineStyle.endMarker.

ImprovementLuciadRIA

RIA-2281
You can now draw dashed lines on a WebGLMap. For more information, see the JSdoc for LineStyle.dash and LineStyle.dashOffset.

ImprovementLuciadRIA

CreateController will no longer deactivate when the user clicks outside of the Map's projection bounds.

ImprovementLuciadRIA

The ECDIS WMS sample (samples/ecdis/S52DisplaySettingsPanel.js) now has UI options to set the ship's beam and air draft. These settings affect the visualization of the safety of fixed bridges in InlandECDIS (IENC) datasets.

ImprovementLuciadRIA

RIA-2247
You can now limit the point count for editing, just like you can limit it for creation. For more information, seeEditController.setPointCount.

ImprovementLuciadRIA

RIA-2251
Improved tileset tree traversal to make it more robust and precise.

ImprovementLuciadRIA

RIA-2241
Added a warning to notify when glTF data have misaligned accessors.

ImprovementLuciadRIA

RIA-2115
The whenReady promise is resolved a soon as QueryStatus.QUERY_ERROR is reported for the underlying feature layer.

ImprovementLuciadRIA

RIA-2158
Terrain is now only pushed downward if needed, when encountering a 3D tiles dataset.

ImprovementLuciadRIA

RIA-2141
Improved flexibility for decoding OGC 3D Tiles metadata : now content.url and content.uri are both supported.

ImprovementLuciadRIA

RIA-1026
Improved the messages for license errors.

ImprovementLuciadRIA

RIA-2139
KMLModel now supports DOMStrings with object URLs created with URL.createObjectURL().

ImprovementLuciadRIA

RIA-2065
Symbology Encoding painter (created by SEPainterFactory) supports now symbology encoding definition containing Mark element with WellKnownName symbols. The following values for WellKnownName symbols are supported: square, circle, triangle, star, cross, x, pentagon and hexagon. Other values are defaulted to square.

ImprovementLuciadRIA

RIA-2126
It is now also possible to invalidate() a RasterImageModel.

ImprovementLuciadRIA

When using FeatureLayers with LayerTypeDYNAMIC on a WebGLMap, the background processing will be optimized for better throughput of updates. Changes will appear on the screen faster. Painting performance (frames per second) may decrease in this case. For more information, see API documentation of LayerType.

ImprovementLuciadRIA

RIA-327
Map will now fire ControllerChanged events whenever a new controller becomes active on the Map.

ImprovementLuciadRIA

RIA-865
LuciadRIA now supports creation and editing of Bounds shapes.

ImprovementLuciadRIA

RIA-2081
The 'double-click-to-fit' behavior of the sample LayerTreeControl is now restricted to just the label of the layer. This avoids issues with the fit being triggered at undesired moments, for example when rapidly toggling visibility.

ImprovementLuciadRIA

RIA-1086
GeoCanvas#drawText is now also supported by WebGL maps

ImprovementLuciadRIA

LuciadRIA now includes an OGC3DTilesModel and TileSet3DLayer for displaying mesh data and point clouds Example:
      OGC3DTilesModel
      .create("dataset.json")
      .then(function(model, { label: "My dataset" }) { return new TileSet3DLayer(model); })
      .then(function(layer) { map.layerTree.addChild(layer); });
    

ImprovementLuciadRIA

RIA-2029
GeoCanvas.drawText is now also supported on hardware-accelerated maps.

ImprovementLuciadRIA

RIA-2056
findLayerById, findLayerGroupById and findLayerTreeNodeById methods now can be used on all layer tree nodes, instead of only the layer tree.

ImprovementLuciadRIA

RIA-1909
Added Geodesy.calculate3D method to calculate a distance in a 3D Cartesian space.

ImprovementLuciadRIA

Added Ellipse.interpolate() method to calculate points on an ellipse using parameterization.

ImprovementLuciadRIA

RIA-111
luciad/shape/Point is no longer a subtype of Array

ImprovementLuciadRIA

RIA-2319
LabelCanvas now also allows HTMLElement as first parameter for its drawLabel, drawLabelInPath & drawLabelOnPath methods.

ImprovementLuciadRIA

RIA-2031
Geodesy's function interpolate now supports negative distances. This result in the computation on the corresponding positive distance with the opposite azimuth.

ImprovementLuciadRIA

RIA-2009
3D maps now have a field of stars in the background. It can be disabled by setting the starfield effect to false. See GraphicsEffects.starfield or Map.effects for more details.

ImprovementLuciadRIA

RIA-2011
The sample TimeSlider now performs fits without any margin, and with allowWarpXYAxis set to true. This allows for more accurate timeline fits that change the X/Y scale ratio of the TimeSlider.

ImprovementLuciadRIA

RIA-1987
luciad/symbology/canvas/ModifierStroke now supports an alignment option for the start and end of the line.

ImprovementLuciadRIA

RIA-1312
Added support for "CRS:1" in ReferenceProvider. This reference is not georeferenced and projects coordinates directly to on-screen pixel values, using an affine cartesian transformation. It allows you to visualize regular images on a map, using the same API, controllers and functionality as a georeferenced map. The new image viewer sample demonstrates this functionality.

ImprovementLuciadRIA

You can select a feature by clicking on its label or on its painted shape.

ImprovementLuciadRIA

The Map API (pickAt, pickAtRectangle, pickClosestObject, and pickClosestObjectRectangle) allows you to retrieve features at a particular location that overlaps with one of the paint representations of the object:
  • The object body
  • The object label. This option is inactive by default.

ImprovementLuciadRIA

RIA-1982
Non-WebGLMaps can now be rotated just like 2D WebGLMaps. Note that rotation will still be disabled in the following cases (both for Non-WebGLMaps and WebGLMaps):
  • A navigation restriction is set on the Map (with Map#restrictNavigationToBounds)
  • Axes are configured on the Map
  • There is a GoogleLayer present on the Map

ImprovementLuciadRIA

RIA-1335
GeoJsonCodec can now handle features with null value for the geometry property.

ImprovementLuciadRIA

RIA-1972
WorkingSet now always emits the clear event when the loading strategy query has changed.

ImprovementLuciadRIA

RIA-1888
The LayerTreeControl in RIA sample code now allows the user to collapse layer groups by clicking on the folder icon.

ImprovementLuciadRIA

RIA-1948, RIA-531
MemoryStore now has a clear method that allows you to remove all features from the store at once

ImprovementLuciadRIA

RIA-1926
Fixed an issue when using an HTML5 Image object in IconStyle in a WebGLMap. If the image was already loaded, it wasn't applied to the icon.

ImprovementLuciadRIA

RIA-1795
Enhanced ExpressionFactory.map to support a larger number of icons. This makes it easier to create icon animations using the ParameterizedPointPainter.

ImprovementLuciadRIA

The in-path labeling algorithm by default attempts alternative locations when a label threatens to go off-screen. You can deactivate this behavior by setting the InPathLabelStyle.inView property to false.

ImprovementLuciadRIA

RIA-1743
When using webpack, you no longer need to set the {node: { fs: 'empty' }} flag in order to make packing work with WebGLMaps.

ImprovementLuciadRIA

The terrain sample has been renamed to terrain services sample. The functionality of this sample has been extended to make use of two web services. The first service provides retrieval of the height at a given location. The second service provides a line of sight calculation providing you information on what objects you may see in your surroundings. By default the samples services are used. Customers having LuciadFusion Advanced or LuciadFusion Pro have access to the sample code for the server part of these web services.

ImprovementLuciadRIA

RIA-278
Controllers can now draw labels by implementing the Controller#onDrawLabel method. See the Controller JSdoc for more details and the updated Ruler sample for a usage example (cfr. RulerController#onDrawLabel).

ImprovementLuciadRIA

RIA-1431
ClusteringTransformer: changing between clustering transformers on a FeatureLayer now no longer causes a model query, if not necessary.

ImprovementLuciadRIA

RIA-1881
LayerTree nodes now have a readonly map property

ImprovementLuciadRIA

RIA-163
LuciadRIA now attempts alternative locations when placing labels along a line, which increases the chance that on-path labels will stay visible.

ImprovementLuciadRIA

RIA-1874
LuciadRIA now supports shapes of type Sector

ImprovementLuciadRIA

RIA-1583
It is now possible to change the label of a layer or layer group

ImprovementLuciadRIA

RIA-1863
The Position parameter of LayerGroup#MoveChild() is now optional and defaults to "top" when not present

ImprovementLuciadRIA

RIA-1863
The Position parameter of LayerGroup#MoveChild() is now optional and defaults to "top" when not present

ImprovementLuciadRIA

RIA-1830
You can now prevent labels being drawn outside of bounds of painted shapes by configuring the restrictToBounds property in the InPathLabelStyle object literal.

ImprovementLuciadRIA

RIA-1854
LayerGroup#moveChild now also supports moving layers between different layer groups

ImprovementLuciadRIA

RIA-1856
LayerGroup#addChild falls back to LayerGroup#moveChild whenever the layerTreeNode already has a parent

ImprovementLuciadRIA

RIA-1845
LuciadRIA can now parse WKT strings that represent projected coordinate systems that use an azimuthal equidistant projection.

ImprovementLuciadRIA

RIA-1839
ShapeProvider supports invalidating shapes for individual features using invalidate or invalidateById methods. Invalidating an individual feature guarantees that the object will be repainted with a new shape during the next map render.

ImprovementLuciadRIA

RIA-1534
ShapeProvider#invalidate() (without arguments) is deprecated and replaced by ShapeProvider#invalidateAll(), which is optimized for better performance.

ImprovementLuciadRIA

RIA-1823
Possibility to decorate the left border with icons and labels on the vertical view. The left border decorations are painted only when PaintRepresentation.LEFTBORDERBODY and PaintRepresentation.LEFTBORDERBODY are enabled on layers used on the vertical views. By default these paint representations are disabled.

ImprovementLuciadRIA

RIA-1802
MapNavigator#lookFrom and Map#restoreState now have animated versions. See the JSDoc for details.

ImprovementLuciadRIA

RIA-1786
GeoJsonCodec#decode can handle object.content that is represented as a JavaScript object.

ImprovementLuciadRIA

RIA-1657
LuciadRIA is now shipped with a TypeScript declaration file for the LuciadRIA API. This allows you to use LuciadRIA in a TypeScript declaration and hawe the TypeScript compiler check the valid use of the API.

ImprovementLuciadRIA

RIA-1770
The baseURL property of URLTileSetModel is now a writable property. Assigning a new value to it will invalidate the UrlTileSetModel, which will refresh the visualization.

ImprovementLuciadRIA

RIA-1679
A URLTileSetModel can now rotate between multiple subdomains when retrieving tiles from a tile service. You can do so by using the {s} subdomain hook in the baseURL and setting the subdomains property of the model.

ImprovementLuciadRIA

RIA-1722
UrlStore andWFSFeatureStorenow accept new optional constructor parameterswithCredentialsandrequestHeaders`. They are added to each HTTP request (XmlHttpRequest) to the server. That way the server can authenticate the user and respond accordingly.

ImprovementLuciadRIA

RIA-1740
You can now compensate for Tile Services whose Y axis for tile coordinates is reversed with respect to the Y axis direction used in LuciadRIA. If tile rows appeare to be visualized incorrectly, you can correct this by using the {-y} placeholder in the baseURL, the model will automatically calculate the correct value for the y coordinate. Before this, you had to override the getTileURL() method of the UrlTileSetModel to calculate the correct y-coordinate value.

ImprovementLuciadRIA

RIA-1673
The getTileURL() method from UrlTileSetModel now replaces all occurrences of {x}, {y} and {z} in the base URL instead of only the first occurrence.

ImprovementLuciadRIA

LuciadRIA now provides API to set the License text programmatically. If you don't call this API, the license will still be retrieved from the default location, i.e. luciad/license/luciadria_development.txt and luciad/license/luciadria_deployment.txt See luciad/util/License for more information on how to use the API.

ImprovementLuciadRIA

Because LuciadRIA does not depend on dojo, the dojo library has been moved to samples/lib.

ImprovementLuciadRIA

RIA-1717
Elevation is now supported on RasterTileSetModel. Introduced new RasterDataType and RasterSamplingMode enumerations to identify whether a tileset is image or elevation, and whether it should be area or point sampled. This enhancement lets you add elevation tilesets to LuciadRIA without using FusionTileSetModel. As an example, it can be used to connect to a WMTS service that serve elevation. Elevation RasterTileSetModel instances are limited to Quad-tree like structures served as 32-bit floating point TIFF files, or 16-bit unsigned integers. For more information on custom elevation tilesets, please consult the developer guide.

ImprovementLuciadRIA

RIA-1763
Use the browser native implementation of ES6 map if it exists, or otherwise a polyfill map.

ImprovementLuciadRIA

RIA-1746
Map#restoreState will now work for states that were saved on a Map with another reference.

ImprovementLuciadRIA

Introduced the ParameterizedPointPainter and associated classes for WebGL accelerated views. The ParameterizedPointPainter enables GPU based filtering and expressive styling of points, as well as visualizing density plots (heatmap). See the "Timeline" sample for an example.

ImprovementLuciadRIA

RIA-1006
The QueryError event is emitted on the WorkingSet whenever an error occurs while processing a Cursor.

ImprovementLuciadRIA

RIA-1716
Any errors that may occur while querying a store are reported in the browser's log.

ImprovementLuciadRIA

RIA-523
Context menu items created by the EditController and CreateController now have a 'id' property. You can use this id in Map.onShowContextMenu to change the way these context menu items are presented (for example, change the label to a different language). See the JSdoc of ContextMenu.Identifier for more information.

ImprovementLuciadRIA

RIA-1713
The atmosphere on 3D maps can now be toggled off by setting map.effects.atmosphere to false. For more information, read the JSdoc of GraphicsEffects.atmosphere.

ImprovementLuciadRIA

The GeoJsonCodec now always generates IDs (UUID) for features that have no ID, if you do not explicitly configure generateIDs. As before, if you configure the GeoJsonCodec with generateIDs set to true, it will override existing IDs. If generateIDs is set to false, no IDs will be generated, but an error will be thrown if a Feature without an ID is encountered.

ImprovementLuciadRIA

RIA-1709
WebGL maps now support non-world-covering tilesets. Previously you were limited to only using tilesets with references that covered the entire world, but this restriction has been lifted.

ImprovementLuciadRIA

RIA-1701
The performance of feature visualization has been improved on Internet Explorer 10.

ImprovementLuciadRIA

RIA-1697
It is now possible to calculate the area of a polygon by using the area method on Geodesy.

ImprovementLuciadRIA

RIA-965, RIA-1663
It is now possible to configure the tiling structure and the amount of scale levels on a WMSTileSetModel. You can do this by passing tileWidth, tileHeight, level0Columns, level0Rows and levelCount to the WMSTileSetModel constructor. These settings allow you to adjust the tile structure, for example to make it match the TileGrid configured on a GeoWebCache server.

ImprovementLuciadRIA

For convenience, the filter predicate function can be passed to the constructor of FeatureLayer.

ImprovementLuciadRIA

RIA-1677
Controller now exposes an Invalidated event, indicating that the Controller's appearance has changed and its onDraw method should be called in the next rendering pass.

ImprovementLuciadRIA

RIA-1656
On WebGLMap, labels for small polyline of 2 points could be not displayed sometimes, now it has been fixed.

ImprovementLuciadRIA

RIA-1589
In non-hardware accelerated rendering, the position of labels drawn by drawLabelInPath can be recalculated to remain in the view if its shape is partially visible. This can be activated by using an InPathLabelStyle with its new property "inView" set to true.

ImprovementLuciadRIA

RIA-1586
In non-hardware accelerated rendering, the position of labels drawn by drawLabelInPath has been improved. The label will also avoid to be drawn in a hole in case of a complex polygon.

ImprovementLuciadRIA

LuciadRIA now supports basic OGC Filter specification 2.0 for creation filter expressions. Filter expressions can be used to encode query requests to OGC WFS 2.0 services, as well to build predicate functions for filtering features on the client side. Please refer to the FilterFactory documentation for details.

ImprovementLuciadRIA

RIA-1617
In some cases, feature layers were not refreshed when they were made visible after navigation while they were invisible. This affected feature layers using LoadSpatially and also feature layers using ClusteringTransformer.

ImprovementLuciadRIA

RIA-1619
ClusteringTransformer : in a 3D view, the features at the back of the globe will now also be clustered, to prevent that unclustered features are temporarily visible when panning to the other side of the globe.

ImprovementLuciadRIA

RIA-1001
You can specify the labeling placement order for decluttering by submitting an array of the label positions instead of a bitwise-OR of them. It only impacts OnPathLabelStyle and PointLabelStyle.

ImprovementLuciadRIA

RIA-1572
Improved memory clean up when calling map.destroy() on a non-WebGLMap.

ImprovementLuciadRIA

The default zooming behavior now supports 'precision zooming'. Hold the SHIFT key while zooming with the scroll wheel to zoom slowly. Note that precision zooming works better when scale snapping ( MapNavigator.defaults.snapToScaleLevels) is disabled.

ImprovementLuciadRIA

Scale snapping for MapNavigator operations is now configurable through the MapNavigator.defaults.snapToScaleLevels property. It can also be configured for individual calls to MapNavigator.zoom and MapNavigator.fit. If you value smooth zooming over pixel-perfect raster scale levels, you should disable scale snapping. For backwards compatibility, the initial value of MapNavigator.defaults.snapToScaleLevels is true. See the MapNavigator JSdoc for more information.

ImprovementLuciadRIA

RIA-664
Improved support for MacBook touchpad and Apple Magic Mouse zooming.

ImprovementLuciadRIA

RIA-1029
LuciadRIA now has a file (samples/projection/resources/epsgcoordref.txt) that contains all the references from the EPSG database that can be parsed by using the ReferenceProvider.parseWellKnownText method. Now you can pick the references that you need for your application from this file, as shown in the projection sample.

ImprovementLuciadRIA

RIA-1558
Improved DOM compatibility by replacing new Image() instances with document.createElement('img').

ImprovementLuciadRIA

RIA-1447, RIA-1317
It is now possible to add custom references to the ReferenceProvider by using the ReferenceProvider.addReference method. Once a reference is added, it can be retrieved by using the ReferenceProvider.getReference method with the same identifier. ReferenceProvider.isValidReference will return true for that identifier. Additionally, creating above-terrain references from custom references previously added to the ReferenceProvider is now also possible. See the ReferenceProvider.getHeightAboveTerrainReference documentation. This used to be limited to the references available by default in the ReferenceProvider. Note that this also permits using custom references in GMLCodec and GeoJsonCodec without knowing your references up-front.

ImprovementLuciadRIA

RIA-402
GestureEvents now have a 'viewPoint' property. This property is similar to 'viewPosition', but it is a Point instead of an Array. This makes it easier to transform the locations of GestureEvents to different references. Before, you would have to construct a Point using the coordinates of the 'viewPosition' array. Now you can just use 'viewPoint' and directly pass it to Transformation.transform.

ImprovementLuciadRIA

RIA-1547
ClusteringTransformer: the performance of the clustering algorithm has been improved.

ImprovementLuciadRIA

RIA-69
You can now double click with the right mouse button to zoom out on the map, just like you already could double click with the left mouse button to zoom in on the map.

ImprovementLuciadRIA

RIA-1172
RIA will now detect and discard Bing Maps tiles that contain no imagery.

ImprovementLuciadRIA

The MapNavigator API has been overhauled. All previously existing methods have been reduced to 4 new ones: pan, zoom, rotate and fit. You can configure each operation to your needs by passing an options object. All existing functions on MapNavigator are deprecated. Their deprecation notes show how you can replace them with the new functions. Please refer to the API documentation for details.

ImprovementLuciadRIA

RIA-811
It is possible to configure SLD, SLD_BODY and dimension (for example, TIME and ELEVATION) request parameters on WMSImageModels and WMSTileSetModels. The STYLES property is now also exposed and writable on both models. Before, you could only configure STYLES at construction time. These parameters will be sent with each GetMap and GetFeatureInfo request.

ImprovementLuciadRIA

RIA-811
It is now possible to to add arbitrary request parameters to WMS GetFeatureInfo and GetMap requests, both for WMSTileSetModels and WMSImageModels. You can do this by assigning an object literal to the model's requestParameters property, or by passing requestParameters at construction time.

ImprovementLuciadRIA

The new "Multispectral Analysis" sample shows two multi-spectral raster datasets that you can visually compare by instantly cross-fading layers. It also demonstrates how to use WMS with an SLD/SE RasterSymbolizer.

ImprovementLuciadRIA

The new "Timeline" sample demonstrates how to use a non-georeferenced LuciadRIA Map to display time-based data. See the TimeSlider.js file for a re-usable component.

ImprovementLuciadRIA

The WMS, WMTS, WFS, Fusion, Bing, KML and GML samples have been replaced with the single "Data Formats" sample. See the various "DataLoader" files for snippets on how to load data for a certain format.

ImprovementLuciadRIA

It is now possible to create 3D icons in LuciadRIA by using the GeoCanvas#drawIcon3D method. Icon3DStyle allows you to set the 3D Mesh that will be used for your icon, as well as its scale, rotation, translation and orientation. A 3D icon can be created in two ways:
  • By decoding a glTF file. LuciadRIA includes support for single-texture based glTF files (Note that custom shaders, animations and skins are not supported). You can decode a glTF file by specifying its path in the Icon3DStyle class.
  • By creating a custom 3D Mesh using the MeshFactory class.
The 3D icons sample demonstrates how to create different types of 3D Meshes. It also provides some custom code to generate basic 3D primitives such as spheres, domes and cones.

ImprovementLuciadRIA

The rasterStyle.alpha of a RasterTileSetLayer is now also applied in a WebGLMap.

ImprovementLuciadRIA

You can now enable lighting on a WebGLMap. You have three options:
  • a light based on your camera (this is the default)
  • a sun light based on a specific time
  • no lighting
See luciad/view/Map#effects and luciad/view/LightEffect for details.

ImprovementLuciadRIA

RIA-1348
Calling Map.selectObject for a feature that is contained in a cluster will now take that feature out of the cluster and select it.

ImprovementLuciadRIA

RIA-1367
Transformations efficiency has been improved by reusing existing OutOfBoundsException exceptions instead of creating new ones for failed transformations.

ImprovementLuciadRIA

LuciadRIA now has a sample that shows what features of a WebGLMap are supported on your device and browser. The report gives you an overview of supported features, unsupported features and limitations of a WebGLMap due to the capabilities of your device and browser. See "samples/devicesupport/index.html". You can include the report when you submit a support question.

ImprovementLuciadRIA

GridLayer can now also be used in a luciad/view/WebGLMap. The styling is similar as in luciad/view/Map except that the stroke for labels defined in TextStyle is ignored.

ImprovementLuciadRIA

IconStyle now has a 'heading' property, which can be used to rotate icons based on an azimuth (a compass direction). This feature is available for both luciad/view/WebGLMap and luciad/view/Map.

ImprovementLuciadRIA

RIA-1369, RIA-789
You can now use GridLayer in all supported projections.

ImprovementLuciadRIA

The clustering sample now demonstrates how you can wrap a regular FeaturePainter that is not aware of clustering with a FeaturePainter that handles the clustered features.

ImprovementLuciadRIA

RIA-1315
The Geodesy interpolate method now takes the z-coordinate into account. In case of interpolation between two points, the z-coordinate is interpolated linearly. In the case where a point is calculated given an input point, distance and azimuth, the z-coordinate is copied from the input point.

ImprovementLuciadRIA

LuciadRIA now no longer depends on an external dojo deployment. This means that: - when developing applications with LuciadRIA, you no longer have to configure the module loader with the location of the dojo toolkit as it is no longer needed. - when using modules from the luciad namespace, the global dojo object will no longer be registered on the global window object. - users have greater flexibility in their choice of build-tools. Due to dojo specific features in the dojo modules, it was not always possible to use Javascript minification tools other than the dojo deployment tools. While the luciad developer api is no longer dependent on an external dojo deployment, the samples that are shipped with the release continue to rely on the dojo release that is included with the release. That is because the samples continue to rely on many of the utility functionality from dojo and many of the UI-components from dijit.

ImprovementLuciadRIA

LuciadRIA WebGLMap now supports all references supported by a non-WebGLMap. See the ReferenceProvider documentation for more details, or the Geodetic References chapter of the Developer's Guide.

ImprovementLuciadRIA

Added support for decoding GML 3.1 and GML 3.2 geometry that conform to Simple Feature level SF-0. A GMLCodec has been added to the API that can easily be used in combination with a WFSFeatureStore or a UrlStore, to load data from a WFS service or a specific url respectively.

ImprovementLuciadRIA

RIA-1324
The luciad/view/feature/FeaturePainter#invalidateById method has now been added. This method allows users to invalidate the visualization of a Feature by its identifier. This is useful in situations where a user does not have a reference to the actual Feature-instance, but does have access to the identifier value.

ImprovementLuciadRIA

RIA-1162
The code First Sample of LuciadRIA has been reduced to the bare minimum that is necessary to start a LuciadRIA application.

ImprovementLuciadRIA

RIA-936
When using a luciad/view/Map, it is possible to use an SVG icon for the luciad/view/style/IconStyle#image property.

ImprovementLuciadRIA

RIA-1271
WFS sample: the smaller cities, shown when zoomed in enough, are now painted with a smaller icon to distinguish them from the large cities that are always shown.

ImprovementLuciadRIA

RIA-1262
Vertical View sample: the vertical view is no longer completely rebuilt when selecting the same trajectory again.

ImprovementLuciadRIA

RIA-897
The following redundant methods have been deprecated:
  • Shape:
    • contains2D(x, y) in favor of contains2DCoordinates(x, y)
    • contains2D(point) in favor of contains2DPoint(point)
  • Bounds:
    • contains2D(bounds) in favor of contains2DBounds(bounds)
    • contains3D(point) in favor of contains3DPoint(point)
    • contains3D(bounds) in favor of contains3DBounds(bounds)

ImprovementLuciadRIA

KML now supports IconStyle.hotSpot, meaning that KML placemarks with icons will have anchorpoints attached to them.

ImprovementLuciadRIA

RIA-988
The default settings for the LonLatGrid constructor now provide a grid that adjust to your zoom level. Previously you had to specify this switch behavior yourself.

ImprovementLuciadRIA

The BasicCreateController provides now sensible default values for the minimum number of points that should be created for polygons (3) and polylines (2).

ImprovementLuciadRIA

It is now possible to introduce clustering to help reduce the clutter when there are many objects in a LuciadRIA view. You can configure a FeatureLayer to use a ClusteringTransformer, which will aggregate model elements that are close together into a cluster.

For more information, please refer to the LuciadRIA Developer's Guide chapter "Clustering".

ImprovementLuciadRIA

RIA-921
The TreeLayerControl now always emits events when you change the selected layer. Previously only clicking exactly on the text label caused the events to be emitted. Now you can also click on the icon or whitespace next to the label.

ImprovementLuciadRIA

LuciadRIA now has support for WebGL hardware-accelerated 3D and 2D maps. You can configure your current application for WebGL using luciad/view/WebGLMap instead of luciad/view/Map (otherwise identical). To enable 3D, use luciad.view.WebGLMap with constructor option { reference: ReferenceProvider.getReference("EPSG:4978") }. For more information, please refer to the LuciadRIA Developer's Guide chapter "Working with WebGL 2D or 3D maps".

ImprovementLuciadRIA

LuciadRIA now supported "above-terrain" vertical references. This is useful for modeling 2D data that is located on the ground instead of ellipsoid or geoid, or for 3D data measured relative the ground. See luciad.reference.ReferenceProvidergetHeightAboveTerrainReference function documentation for more details.

ImprovementLuciadRIA

RIA-933
When using the LoadSpatially strategy, the FeatureLayer will no longer query the model when zooming in. This is because the features that were retrieved for the previous extent cover completely the area of the new extent.

ImprovementLuciadRIA

LuciadRIA now officially supports Microsoft Edge.

ImprovementLuciadRIA

Selection is now more accurate on touch devices.

ImprovementLuciadRIA

It is now possible to use LuciadRIA on heterogeneous devices that have both a mouse and a touch screen.

ImprovementLuciadRIA

Introduced the TrajectoryPainter for WebGL accelerated views. The TrajectoryPainter enables GPU based styling of trajectory lines, with time filtering and highlighting. See the "Trajectories" sample for an example.

ImprovementLuciadRIA

Introduced the ParameterizedLinePainter for WebGL accelerated views. The ParameterizedLinePainter enables GPU based filtering and styling of lines, with per-point styling, as well as visualizing density plots (heatmap). See the "Parameterized Lines" sample for an example.

ImprovementLuciadRIA

On WebGL maps, each painter can now enable density maps (heatmaps) using the FeaturePainter.density property. See the "Tracks" sample for an example.

ImprovementLuciadRIA

RIA-889
Configuring the WFSFeatureStore's reference and the FeatureModel's reference has now been made more transparent:
  • When a FeatureModel is constructed without explicitly setting the reference, it will borrow the reference from the WFSFeatureStore.
  • When the reference of the FeatureModel is not identical to the reference of its WFSFeatureStore, a warning will be logged to the console explaining this discrepancy. It is a restriction of the WFSFeatureStore that its reference is identical to the reference of the FeatureModel it is added to.

ImprovementLuciadRIA

LuciadRIA now has support for performing boolean operations on shapes. This functionality is part of the new optional component 'Geometry'.

ImprovementLuciadRIA

RIA-876
When editing a ShapeList, using the handle to translate a sub-shape will also translate all the other sub-shapes.

ImprovementLuciadRIA

Improved the performance and precision of several projections:
  • Albers Equal Area Conic
  • Azimuthal Equidistant
  • Cassini
  • Dutch Stereographic
  • Eckert IV and VI
  • Lambert Azimuthal Equal Area
  • Lambert Conformal
  • Mollweide
  • Oblique Mercator
  • Orthographic
  • Polyconic
  • Spherical Oblique Mercator
  • Stereographic
  • Swiss Oblique Mercator
  • Transverse Mercator

ImprovementLuciadRIA

RIA-862
It is now possible to calculate the shortest distance from a point to a line or line segment by using the shortestDistanceToLine method on Geodesy.

ImprovementLuciadRIA

LuciadRIA now has support for extruded shapes. Extruded shapes are 3D volumes created by extruding a 2D line or area with a minimum and maximum height. You can create an extruded shape using ShapeFactory.createExtrudedShape. The "Create and Edit" sample allows you to create an extruded shape based on a base shape using a context menu item.

ImprovementLuciadRIA

RIA-774
It is now possible style a GoogleLayer. Styling adheres to the [Styled Maps](https://developers.google.com/maps/documentation/javascript/styling) specification of the Google Maps JavaScript API.

ImprovementLuciadRIA

RIA-749
The WMS layers now sends the PIXELSIZE parameter when making requests to a WMS server. If the WMS server supports it, it can take the clients pixel size into account when determining scale ranges. The LuciadLightspeed WMS server supports this PIXELSIZE parameter. This way, the scale calculations in the RIA application and on the server can match.

ImprovementLuciadRIA

RIA-739
luciad/geodesy/GeodesyFactory#createCartesianReference now also accepts non-spatial references (created with luciad/reference/ReferenceProvider.createCartesianReference()) when creating Geodesy instances. Note that an Error will be thrown if you try to create a non-cartesian Geodesy instance with such a reference.

ImprovementLuciadRIA

RIA-779
The warning messages about a license that will expire soon are no longer shown in an alert box. Instead, this warning is now only printed on the console.

ImprovementLuciadRIA

You can now create references based on Well-Known Text strings. This means you can now support more references than those supported by ReferenceProvider.getReference(). See ReferenceProvider.parseWellKnownText for more details

ImprovementLuciadRIA

RIA-747
The slider in the Selection sample will now smoothly filter the data, while the user is dragging. Previously, the data was only filtered when the user released the slider.

ImprovementLuciadRIA

When a navigation restriction is set on the map with Map#restrictNavigationToBounds, and the user tries to pan the map outside the extent, the map shows visual feedback to show it has reached the edge or edges of the restriction. This feedback is a grey bulb that expands from one or more of the edges, getting larger the more the user tries to pan in the wrong direction.

ImprovementLuciadRIA

Added support for WMS GetFeatureInfo requests. You can get feature information on a certain view location by calling getFeatureInfo on WMSImageLayer or WMSTileSetLayer. Calling this method will perform a GetFeatureInfo request that matches what is painted in the view. luciad.view.image.WMSImageLayer and luciad.view.tileset.WMSTileSetLayer are new classes. If you do not need GetFeatureInfo requests, you can keep using the regular RasterImageLayer and RasterTileSetLayer.

ImprovementLuciadRIA

RIA-729
Added the EPSG:2319, EPSG:2320, EPSG:2321, EPSG:2322, EPSG:2323, EPSG:2324 and EPSG:2325 spatial references to the ReferenceProvider.

ImprovementLuciadRIA

It is now possible to convert any given point to a MGRS (Military Grid Reference System) coordinate using luciad.shape.format.MGRSPointFormat.

ImprovementLuciadRIA

Added the 'Number' unit of measure. This quantity kind of this unit is 'Dimensionless'. Use this unit if the values do not represent a physical quantity.

ImprovementLuciadRIA

RIA-644
The following spatial references are now supported: EPSG:5253, EPSG:5254, EPSG:5255, EPSG:5256, EPSG:5257, EPSG:5258, EPSG:5259, SR-ORG:7869, SR-ORG:7870, SR-ORG:7871, SR-ORG:7872.

ImprovementLuciadRIA

RIA-613
It is now possible to configure a background color for a WMSTileSetModel

ImprovementLuciadRIA

RIA-280
FeatureModel now has a bounds property. This property corresponds to the bounds of the entire dataset. This property is optional. This FeatureModel's bounds does not necessarily correspond to the bounds of the the data that is visualized in the FeatureLayer. This is because the layer may have queried only a subset of the data from the model. Instead, use the FeatureLayer.workingSet.bounds property to retrieve the bounding box of all the data that is queried by the FeatureLayer.

ImprovementLuciadRIA

RIA-518
It is now possible to change the styling of editing handle icons. See the "handleIconStyle" option in the EditController constructor.

ImprovementLuciadRIA

RIA-554
It is now possible to modify the opacity of a RasterTileSetLayer and a RasterImageLayer by setting their rasterStyle property.

ImprovementLuciadRIA

RIA-255
It is now possible to finish interactive shape editing or creation by single-clicking on the map background instead of double-clicking. This is demonstrated in the Create and Edit sample. See also documentation of CreateController or EditController.

ImprovementLuciadRIA

RIA-550
The selection heuristics have been improved when using the Map's pickClosestObject method. It is now easier to select by touch or mouse the correct object from a collection of overlapping shapes or icons of varying sizes. This is because the new heuristics also take into account the distances from the edge and from the center of the bounding box of the object, to the pick position.

ImprovementLuciadRIA

RIA-541
The findLayerTreeNodeById and the findLayerGroupById methods have been added to luciad.view.LayerTree.

ImprovementLuciadRIA

RIA-547
It is possible now to configure the paintRepresentation visibility of a LayerGroup in a LayerTree

ImprovementLuciadRIA

RIA-481
Two new events have been added to the Map. ShowBalloon and HideBalloon. These fire when a balloon opens and closes respectively.

ImprovementLuciadRIA

If the requestReference parameter of the WMSTileSetModel is used, a warning message will be logged to the console. This parameter was incorrectly documented in the API doc, and should not be used.

ImprovementLuciadRIA

RIA-471
It is now possible to add raster layers to a map, when the layer's model reference is not identical to the reference of the map. This is only possible when coordinates of the spatial reference system of the model can be converted to coordinates of the spatial reference system of the map by multiplying them with with a scaling factor. For example, this is useful if you have a LuciadRIA map configured with the EPSG:32663 reference (which uses an equidistant projection, and has a unit of measure in meters), but you would like to connect to the WMS server with the more commonly available OGC CRS:84 reference. In such a scenario, the WMSTileSetModel or the WMSImageModel may be configured with a bounds expressed in coordinates of the CRS:84 reference.

ImprovementLuciadRIA

It is now possible to request WMS images that cover the entire Map using a WMSImageModel. The size of this image matches the pixelsize of the map. This avoids certain visual effects, such as pixelized text or cut-off labels, that can occur when tiles are stretched or compressed using the existing WMSTileSetModel.

ImprovementLuciadRIA

It is now possible to visualize an object with an icon or an label on the border of the map using the optional FeaturePainter#paintBorderBody and FeaturePainter#paintBorderLabel methods. It is also possible to connect an object in a border with its position on the map using the optional IconStyle#stem line-style property.

ImprovementLuciadRIA

It is now possible to create, visualize and edit various additional shapes using the luciad.shape.ShapeFactory.
  • Circles: see luciad.shape.Circle. Circles are defined by center point and radius (luciad.shape.CircleByCenterPoint) or by three points on the circumference (luciad.shape.CircleBy3Points).
  • Ellipses: see luciad.shape.Ellipse. Ellipses are defined by center point, major axis length, minor axis length and major axis rotation azimuthal angle.
  • Circular arcs: see luciad.shape.CircularArc. Circular Arcs are defined by center point and radius (luciad.shape.CircularArcByCenterPoint), by start, intermediate and end points (luciad.shape.CircularArcBy3Points), or by two points and bulge (luciad.shape.CircularArcByBulge).
  • Elliptical arcs: see luciad.shape.Arc. Elliptical arcs are defined by an ellipse, a start azimuthal angle and an arc azimuthal angle.
  • Arc bands: see luciad.shape.ArcBand. Arc bands are sectors, defined by a center point, a minimum and maximum range, a start azimuthal angle and an arc azimuthal angle.
  • GeoBuffers: see luciad.shape.GeoBuffer. They are defined by a base shape, which can be a polyline or polygon, and a width.
The Create and Edit sample illustrates the new shapes. You can interactively create these shapes using the luciad.view.controller.CreateController and luciad.view.controller.BasicCreateController, and edit them using luciad.view.controller.EditController. The sample also shows how you can exchange these shapes with a web service using a custom JSON codec. Note that the new shapes are not covered by the GeoJSON standard and require a custom Codec.

ImprovementLuciadRIA

RIA-486
AirspaceShapeProvider now covers more edge cases and can handle any number of airspace-trajectory intersection points

ImprovementLuciadRIA

RIA-473
The following spatial references are now supported: EPSG:23035, EPSG:23036, EPSG:23037, EPSG:23038, EPSG:2206, EPSG:2207, EPSG:2207, EPSG:2208, EPSG:2209, EPSG:2210, EPSG:2211, EPSG:2212.

ImprovementLuciadRIA

RIA-459
KML now throws error messages and console warnings when KML files do not contain any Placemark features.

ImprovementLuciadRIA

RIA-406
It is now possible to invalidate a RasterTileSetModel using the "invalidate" method. This will signal that the underlying image tiles have changed. If this model is added to a map using a RasterTileSetLayer, calling this method will thus trigger a refresh of the visualization.

ImprovementLuciadRIA

RIA-441
It is now possible to configure the layers of a WMSTileSetModel using the "layers" properties of the model.

ImprovementLuciadRIA

RIA-433
Calling 'Polygon.insertPoint()' or 'Polyline.insertPoint()' now no longer copies the given point. This means that you now have more control over what is inside a polygon or a polyline. To make sure your points are not altered after an 'insertPoint()' call, make sure you copy them before you call 'insertPoint()'. Note that this does not affect previous usage of this method.

ImprovementLuciadRIA

We now support a PointLabelStyle with an offset that is an array instead of a number. This allows more precise labeling control in view space.

ImprovementLuciadRIA

We now support snapping for both creation and editing of shapes. Snapping is automatic if you edit near an existing point. Hold down the Ctrl modifier key to temporarily disable snapping. To make sure a FeatureLayer is not a snap target, set the FeatureLayer#isSnapTarget property to false.

ImprovementLuciadRIA

Support for KML has been added. You can load KML data using a luciad/model/kml/KMLModel, which can be visualized in a luciad/view/kml/KMLLayer. Please refer to the reference documentation for the list of supported features and limitations.

ImprovementLuciadRIA

It is now possible to insert and delete vertices when editing a polyline or polygon. Adding vertices can be done by activating the control point in the middle of a line segment of the shape. Deleting vertices is done by long pressing a vertex, holding the ctrl-key while clicking the vertex, or by selecting the delete option from the context menu.

ImprovementLuciadRIA

RIA-398
When setting a FeatureLayer's query property, the data in the layer's workingSet will not be cleared until the new model data has been loaded. This helps to avoid a "flicker" of the layer data on the map between the time the query property is set, and the time the result of the model has been retrieved.

ImprovementLuciadRIA

RIA-403
When the map is configured with a border, labels are now correctly positioned.

ImprovementLuciadRIA

RIA-391
When trying to paint labels for a feature which has no bodies, no TypeError should be thrown. The label will just be invisible in that case.

ImprovementLuciadRIA

RIA-279
The parameter of MapNavigator#panTo is now a "bounded" and not limited to be a point anymore.

ImprovementLuciadRIA

RIA-54
Now the CreateController for polylines and polygones adds a point on the double click that terminates the creation operation. A preview of the next point is also shown when you move the mouse.

ImprovementLuciadRIA

RIA-176
The painting order respects labels' priorities in a non-decluttered way.

ImprovementLuciadRIA

It is now possible to add Google image data to the map. To do this, construct a RasterImageLayer with a GoogleImageModel and add it to the map. Please review Google's terms of conditions carefully to determine if your application can use the Google Maps image service.

ImprovementLuciadRIA

It is now possible to add a Google Map widget inside a LuciadRIA map as a Layer. This requires you to also include the Google Map Javascript API (v3) on the page by importing it with a script tag.

ImprovementLuciadRIA

RIA-378
The map now emits an "idle" event. This event is fired when the map comes to rest, for example after a user has stopped panning.

ImprovementLuciadRIA

RIA-348
Adding rotation support to icons

ImprovementLuciadRIA

RIA-62
You can now select multiple objects by pressing the "Shift" key while selecting objects.

ImprovementLuciadRIA

RIA-100
luciad/view/Map#selectObjects() now allows adding and removing objects to and from the current selection.

ImprovementLuciadRIA

RIA-305
A function has been added to the TileSetScaleUtil to return the level of a RasterTileSetLayer's model which best correspond to the scale of the map.

ImprovementLuciadRIA

RIA-89
WMS Sample: Hitting enter in the Layer text field makes the same query as clicking on the 'Show WMS layer' button.

ImprovementLuciadRIA

RIA-347
It is now possible to retrieve the current status of a query from a FeatureLayer's WorkingSet using the queryStatus property.

ImprovementLuciadRIA

RIA-267
It is now possible to create new LayerGroups. This enables you to organize layers in the map's layerTree using multiple levels. Previously, layers could only be organized in a flat list.

ImprovementLuciadRIA

The ESPG:3306 coordinate reference is now supported. Use the ReferenceProvider#getReference method to retrieve the reference.

ImprovementLuciadRIA

It is now possible to mix default selection styling into an existing painter using the addSelection() method on FeaturePainterUtil.

ImprovementLuciadRIA

Renamed StrokeStyle literal to LineStyle literal for consistency reasons.

ImprovementLuciadRIA

Reduced poleward latitude limits of Mercator projection to avoid large empty polar areas on maps.

ImprovementLuciadRIA

RIA-313
Added support for CRS:83 (NAD 83) to the ReferenceProvider.

ImprovementLuciadRIA

RIA-312
When a bounds with a geodetic reference is wider than 360 degrees, the longitude (the "x" property) will no longer be snapped to the dateline (-180 degree). Removing this side-effect avoids having to perform some redundant normalization. Functionally, this has no impact on any of the other public API of LuciadRIA.

ImprovementLuciadRIA

To set the dimensions and position of a luciad.shape.Bounds object more efficiently, you can now use the new setTo2D and setTo3D methods.

ImprovementLuciadRIA

RIA-127
Improved documentation on the dependency on the dojo toolkit has been added to the Developer's Guide.

ImprovementLuciadRIA

RIA-254
The .painter property of a FeatureLayer is now no longer read-only. It is thus possible to set the painter of a FeatureLayer after the construction of the layer.

ImprovementLuciadRIA

It is now possible to use a pin to connect a label to an anchor point on the map. Use a new optional "pin" property on the luciad.view.style.PointLabelStyle to do so. See luciad.view.style.PinStyle and luciad.view.style.PinEndPosition for more details about the styling and placement properties of the pin.

ImprovementLuciadRIA

HTML and CSS can now be used to specify the contents and styling of a label. Using these technologies, it is possible to create labels with multiple lines of text, enable rich styling options for halos, colors and fonts, or embed external resources, like images, in the label. See the luciad.view.style.LabelCanvas for details on how to place HTML on the map.

ImprovementLuciadRIA

Support for generating a LuciadRIA FeaturePainter based on an OGC Symbology Encoding has been added. Please refer to the Developer's Guide for details on supported styling and limitations.

ImprovementLuciadRIA

RIA-204
It is now possible to configure a client-side feature filter on a layer. This filter determines what features in the layer's WorkingSet will be visualized. This filter can be a simple javascript function or an OGC filter created with luciad.ogc.filter.FilterFactory.

ImprovementLuciadRIA

It is now possible to set a minimum and maximum scale on the map. When set, it is impossible to zoom in further than the maximum scale or zoom out further than the minimum scale.

ImprovementLuciadRIA

It is now possible to constrain the navigation on the map to a bounds. When set, it is impossible for a user to pan or zoom the map beyond this area.

ImprovementLuciadRIA

RIA-275
It is now possible to draw a shape of type BOUNDS on the map by using the drawShape method of a luciad.view.style.GeoCanvas.

ImprovementLuciadRIA

RIA-273
The methods of the luciad.view.MapNavigator which trigger animations now return a promise (luciad/util/Promise) for the completion of the animation. This promise resolves when the animation has completed. The promise is rejected when the animation is interrupted.

ImprovementLuciadRIA

Support for dashed line styles has been added. These can be configured with the dash and dashOffset properties in luciad/view/style/LineStyle.

ImprovementLuciadRIA

RIA-224
Added documentation to the Developer's Guide: prerequisites for running Jetty server included in a LuciadRIA release.

ImprovementLuciadRIA

LuciadRIA now supports the visualization of non-georeferenced data in a chart. A vertical view sample is provided to illustrate the power of this enhancement. Please refer to the Developer's Guide to configure a non-georeferenced view.

ImprovementLuciadRIA

RIA-108
There have been several improvements in LuciadRIA for dealing with large datasets.
  • To avoid long running scripts and improve responsiveness of the application, the FeatureLayer will process the results of a model query in small batches.
  • Developers can now also enable incremental rendering by setting the FeatureLayer.options.incrementalRenderering flag to true. This way the visual representations of Features is processed in small batches, and drawn to the screen in small increments.
  • The Developer's Guide now includes a chapter on how to create applications when dealing with large datasets. This includes information on web caching strategies, as well as Javascript and LuciadRIA tips and tricks to improve performance.

ImprovementLuciadRIA

An example of how to display a WMTS Layer on a Map is added to the samples under samples/model/tileset/WMTS.

ImprovementLuciadRIA

RIA-208
WorkingSet, FeatureModel and Store now support registration of listeners that only receive events related to objects that match a query filter.

ImprovementLuciadRIA

In the WFSFeatureStore, it is now possible to filter properties from a feature when querying the model. This corresponds to adding the 'propertyName' parameter in a WFS getFeature request.

ImprovementLuciadRIA

RIA-169
The set of features loaded by a FeatureLayer can now be accessed via the workingSet property of the layer.

ImprovementLuciadRIA

The contains2D method has been added to the Shape class.

ImprovementLuciadRIA

RIA-113
TileSetModels can now be instantiated when the pixel-density of the width and height of its tiles are different. For example; the pixel width and the pixel height of a tile which measures 90 degrees longitude by 90 degrees latitude must now not be the same.

ImprovementLuciadRIA

RIA-101
In a FeatureLayer, it is now possible to control the order in which Features are visualized on a Map. A developer can specify this order by setting the zOrder parameters on the style objects which are accepted by the GeoCanvas paint methods.

ImprovementLuciadRIA

RIA-209
Improved context menu documentation.

ImprovementLuciadRIA

RIA-173
Clients can now subscribe to new events via the workingSet property of a FeatureLayer to get notified about the status of a query. These events include the QuerySuccess and QueryError events. The first notifies the client when the layer was successful in querying the model. The second notifies the client when an error occurred during querying the model.

ImprovementLuciadRIA

RIA-206
The fit() method on the MapNavigator no longer throws an exception if you call it with a bounds with zero width and height. Instead it assumes you will be fitting on a point and adapts the scale accordingly.

ImprovementLuciadRIA

It is now possible to add a Longitude-Latitude grid to your Map. Use a luciad.view.grid.LonLatGrid to define your longitude and latitude grid. Then, add it to the map using a luciad.view.grid.GridLayer.

ImprovementLuciadRIA

Samples have been refactored. Samples are now divided into two groups: one set of samples for desktop and tablet computers, and another for small screen mobile devices. All samples can be found under %MyProjectInstallation%/samples. The small-screen mobile samples are grouped under %MyProjectInstallation%/samples/mobile.

ImprovementLuciadRIA

It is now possible to format longitudes and latitudes to a text string. Create a luciad.shape.format.LonLatPointFormat to define a format. You can define your own custom patterns. Then, transform the longitudes and latitudes to a string using the .format() method.

ImprovementLuciadRIA

RIA-172
The luciad.ogc.filter.FilterFactory now allows to create OGC functions.

ImprovementLuciadRIA

It is now possible to use fill patterns as fill for shapes by passing a luciad.view.style.FillStyle instance as fill in the GeoCanvas#drawShape method. For convenience, the luciad.view.style.HatchedImageBuilder class has been introduced which allows to create hatched pattern images programmatically.

ImprovementLuciadRIA

RIA-174
Added mapBounds property to luciad.view.Map. This property reflects the map's extent in the maps' reference.

ImprovementLuciadRIA

RIA-68
Hibernate logging in sample server is significantly reduced. All logging is now configurable through samples/resources/jetty-logging.properties.

ImprovementLuciadRIA

halo and haloWidth are now available when defining text styles. Please refer to the documentation of the drawText method in luciad/view/style/GeoCanvas.

ImprovementLuciadRIA

LuciadRIA now supports querying and visualizing feature data from an OGC Web Feature Service (WFS). A new class luciad/model/feature/WFSFeatureModel allows to retrieve feature data in the GeoJSON format from an OGC WFS 1.0/1.1. Data queries can be formulated using the OGC Filter specification, enabling users to perform a fine-grained selection of the required data. A new module luciad/ogc/filter has been added to support the creation of these OGC Filter queries. See the "WFS sample" for a demonstration of the new functionality.

ImprovementLuciadRIA

LuciadRIA now supports decluttered labeling. This allows you to easily visualize textual information on a map while maintaining readability. You can define labeling-strategies by implementing the paintLabel method from a luciad/view/feature/FeaturePainter. See the "Labeling sample" for a demonstration of the new functionality.

ImprovementLuciadRIA

The rendering performance of raster and vector data has been improved significantly. The raster tile loading is now much smoother and vector features are rendered up to 3 times faster.

ImprovementLuciadRIA

Improved pickAt documentation.

ImprovementLuciadRIA

RIA-4
Tiles painting improvements: enhancements in the detection of the appropriate level of detail.

ImprovementLuciadRIA

RIA-106
General optimizations in discretization and shape code.

ImprovementLuciadRIA

RIA-98
Small optimizations to polygon rendering.

ImprovementLuciadRIA

LuciadRIA is a new Luciad product providing an easy-to-use, object-oriented JavaScript API designed to build geospatial situational awareness applications targeted to run in a browser.

ImprovementAdvanced GIS Engine

LuciadRIA now has support for performing boolean operations on shapes. In order to do so, you can use a ConstructiveGeometry object. ConstructiveGeometryFactory allows you to create ConstructiveGeometry objects performing boolean operations using a cartesian, spherical or ellipsoidal topology.

The following operations are supported:

  • Union
  • Intersection
  • Difference

ImprovementDefense Standards

WebGLMap now supports tactical graphics.

ImprovementDefense Standards

RIA-2196
For improved packability, you can now load your symbology by importing luciad/symbology/military/<SymbologyName> as a module, instead of through the SymbologyProvider. Loading a symbology with the SymbologyProvider has been deprecated.

ImprovementDefense Standards

RIA-1815
We now display the T modifier label for all symbols.

ImprovementDefense Standards

RIA-920
It is now possible to set the affiliation of a symbol with all the affiliation values defined in the standard. The affiliation values for some symbols are limited by the symbology standards and if you want to stick to the standard (e.g. a listing in a GUI) you can still invoke the luciad/symbology/military/MilitarySymbol#possibleValues method to obtain the available affiliation values for a specific symbol.

ImprovementDefense Standards

RIA-1050
The readability of the Military Symbology sample code has been enhanced by moving the clustering related code to the SymbologyClusteringManager class.

ImprovementDefense Standards

It is now possible to load a luciad/symbology/Symbology without using the AMD-plugin method. Instead, you can now just call luciad/symbology/Symbology#getSymbology to retrieve a Symbology for a given code.

The advantage of loading symbologies with this approach is that it does not rely on the AMD-plugin API. This API is generally well supported when using build-tools from the AMD ecosystem, but may not be well supported with other toolchains or JS module systems.

ImprovementDefense Standards

Military symbols now show movement direction arrows.

The following modifiers affect the arrows:

  • "movementDirection": a number indicating the heading of the object. Must be an azimuth: degrees, clock-wise, 0 is north.
  • "speedLabel": a string expressing the movement speed, for example "17 km/h" or "11 kn". Affects the length of the arrow. Only relevant for APP-6C and MIL-STD-2525C.

Ground units will have an arrow starting from a vertical stem.

The length of the arrow is determined by the existing style property "iconSize" in combination with the "speedLabel" modifier if available. The line-width of the arrow is determined by the existing style properties "lineWidth".

ImprovementDefense Standards

RIA-1328
Military symbols can now be painted in a 3D map without draping on terrain. This is mostly used for icon symbols to get orient them towards the viewer instead of flat on the ground.

ImprovementDefense Standards

RIA-578
The deploy script of the Symbology Service servlet can now also create an obfuscated version of the Symbology Service. This makes it possible to use deployment licenses requiring obfuscation.

ImprovementDefense Standards

RIA-950
It is now possible to configure the MilitarySymbologyPainter to include cookies as part of CORS requests to the symbology service.

ImprovementDefense Standards

The Symbol.AffiliationColorEnabled property is now available, and enabled by default.

ImprovementDefense Standards

Support for the military standard APP-6C has been added. It is now possible to create and visualize MilitarySymbol instances using the new 20-digit SIDC codes. luciad.symbology.SymbologyProvider also exposes the new domain hierarchy.

ImprovementDefense Standards

It is now possible to use a Polygon, CircularArc, Arc, ArcBand, Circle, Ellipse, GeoBuffer, ComplexPolygon or ShapeList as geometry for a line-shaped or area-shaped tactical symbol. The supportsShapeType method in SymbologyNode can be used to check whether a shape type is suitable for a symbol.

ImprovementDefense Standards

There is now visualization support for all APP-6 (A/B) and MIL-STD-2525 (B/C) objects, including tactical line-based symbols. In addition, interactive creation and editing is also supported for all symbols.

Relevant components are located in the luciad.symbology namespace. Important modules are:

  • luciad.symbology.SymbologyProvider: an AMD plugin which allows you to load a particular symbology standard
  • luciad.symbology.military.MilitarySymbologyPainter: a configurable painter for military symbols.

Bug fixLuciadRIA

RIA-2980
WFSFeatureStore.createFromCapabilities() and WFSFeatureStore.createFromURL() now take into account options.methods. Before this fix, only methods returned in the server's capabilities response were used.

Bug fixLuciadRIA

RIA-2972
Fixed WMTSTileSetModel.createFromCapabilities() and WMTSTileSetModel.createFromURL() so that these methods will now create a model with a bounds that corresponds with the TileMatrixSet defined in the server's capabilities response. If the TileMatrixSet does not explicitly define the bounds, one will be deduced from the TileMatrices in the set. Before this fix, it was possible that image data was positioned incorrectly on the map.

Bug fixLuciadRIA

RIA-2951
Fixed an issue where the touch controls were not working in desktop versions of Chrome (version 70 and later).

Bug fixLuciadRIA

RIA-2963
Fixed a problem with duplicated dependency in `WFSFeatureStore` that prevents executing the babelify utility on LuciadRIA code.

Bug fixLuciadRIA

RIA-2929, RIA-2970
The logic to skip drawing complex stroke's decorations is now the same both on a Map and on a WebGLMap. A non-gap decoration is skipped when:
  • it goes outside the beginning or the end of the line (unless the decoration is placed at the beginning or at the end of the line)
  • it overlaps with a previous decoration
Before the fix, decorations in such cases on a software-rendered maps were drawn being shifted along the line.

Bug fixLuciadRIA

RIA-2919
Fixed a problem with drawing a label pin when the pin style is defined with endPosition set to PinEndPosition.MIDDLE_BORDER. Before, the label pins were showing up and disappearing erratically when labels were repainted.

Bug fixLuciadRIA

RIA-2930
The labelStyle.priority is now respected when drawing labels for selected features. Before the fix, the priority property was disregarded by the de-cluttering mechanism when drawing labels for selected features. In such situations the order of calling label commands determined the visibility of labels.

Bug fixLuciadRIA

RIA-2931
Fixed situations where shadows could be cast by terrain on objects underneath it, even when it would be displaced and visually not occluding. This was for instance possible with TileSet3DLayer, combined with the offsetTerrain flag.

Bug fixLuciadRIA

RIA-2909
Fixed an issue where the builder script couldn't be run due to usage of the browser specific window variable in MapLoader in the samples.

Bug fixLuciadRIA

RIA-2892
Fixed the handling of an empty WMTS layer style identifier in WMTSTileSetModel.

Bug fixLuciadRIA

RIA-2889
Handle case when WMS 1.3.0 service use incorrect XML property for reference (SRS instead of CRS)

Bug fixLuciadRIA

RIA-2891
Fixed parsing bounds with swap axis in WMSCapabilities for WMS 1.3.0

Bug fixLuciadRIA

RIA-2884
Fixed an issue where GML data is incorrectly decoded when LinearRing, LineString or LineStringSegment geometry is defined with gml:pos elements.

Bug fixLuciadRIA

RIA-2700
Fixed TileSet3DLayer not logging its warning when memory budget does not allow it to fully load a dataset at its requested quality factor.

Bug fixLuciadRIA

RIA-2837
Fixed an issue in the contains2D functions on a lon-lat geo buffer. When using a polyline with more than 4 points as base shape, testing a point that is within the bounds of the buffer, but not within the buffer itself caused an error. This is now resolved.

Bug fixLuciadRIA

RIA-2828
Fixed an issue when layer's loading strategy rejects to reload features after zooming in and out on a map so that strategy's scale levels change back and forth, and one of the scale levels defines the query object with QueryProvider.QUERY_NONE.

Bug fixLuciadRIA

RIA-2814
Fixed an issue for OGC 3D Tiles datasets where the nodes had multiple primitives per mesh, it would occasionally cause a misaligned low-level buffer to be generated, causing missing tiles in the dataset.

Bug fixLuciadRIA

RIA-2300
KML polygon outlines are now painted on the same level as the polygon's area. Previously outlines were sometimes painted above other polygons.

Bug fixLuciadRIA

RIA-2811
When performing a WMS GetFeatureInfo operation, the SLD, SLD_BODY, STYLES and dimensions parameters are now also present in the request. This ensures that GetFeatureInfo requests match the GetMap requests performed by the Map.

Bug fixLuciadRIA

RIA-2794
Fixed an issue of drawing on-path and in-path labels on WebGL maps from a controller ( Controller.onDrawLabel() API). Before the fix the on-path and in-path labels were not repainted where the underlying geometry has changed.

Bug fixLuciadRIA

RIA-2792
Fixed issue with PerspectiveCamera.lookFrom where the camera's direction was not correctly determined when lookFrom.eye was different from the camera's worldReference.

Bug fixLuciadRIA

RIA-2646
Added the CassiniSoldner projection which allows Ellipsoidal computation for Cassini projections.

Bug fixLuciadRIA

RIA-2788
Fixed issue with shadows not disappearing when you made a layer invisible.

Bug fixLuciadRIA

RIA-2777
GMLCodec decodes now the gml:MultiPoint geometry to a LuciadRIA ShapeList containing Points.

Bug fixLuciadRIA

RIA-2782
Fixed a problem when a selected feature was losing its selection representation on a WebGLMap. This situation used to happen in certain map configurations when after panning a selected feature got invisible and then visible again.

Bug fixLuciadRIA

RIA-2784
Fix for excessive memory usage when drawing shapes filled with an image pattern, that is frequently resized. Before the fix image patterns of various sizes were cached without pruning.

Bug fixLuciadRIA

RIA-2705
The depth-of-field graphical effect is now also applied to partially transparent objects.

Bug fixLuciadRIA

RIA-2250
Fixed an issue where point clouds could be painted with very small points if other layers were added behind them.

Bug fixLuciadRIA

RIA-2771
Fixed an issue where shapes that were painted "above terrain" would not be updated entirely when a TileSet3DLayer was set invisible. In practice, they were updated correctly, but one additional repaint frame was needed to get the results on screen.

Bug fixLuciadRIA

RIA-2766
Reduced memory usage for each FeatureLayer on a WebGLMap, even if empty. This effect is noticeable when adding many (100+) layers on your map.

Bug fixLuciadRIA

RIA-2769
Fixed an issue when using terrain offset in combination with 3D tiles data (see TileSet3DLayer option offsetTerrain). There was a regression in 2019.0 that caused gaps would appear at the edges of the offset area. Note that you can still have gaps at the edge of your screen if you navigate very close to the offset terrain.

Bug fixLuciadRIA

RIA-2764
View-sized lines no longer cast a shadow. The reason is because their width depends on the camera position, casting a shadow did not make sense.

Bug fixLuciadRIA

RIA-2577
Fixed a problem where in-path labels (LabelCanvas.drawLabelInPath API) were not drawn on a hardware-accelerated map if the shape's body was painted without a fill style.

Bug fixLuciadRIA

RIA-2751
Fixed an issue when displaying polygons that are vertical (i.e. exactly perpendicular to the ellipsoid). Such polygons had triangle-shaped artifacts and holes.

Bug fixLuciadRIA

RIA-2620
Fixed a problem of drawing a complex polygon that contains a single shape crossing the date line.

Bug fixLuciadRIA

RIA-2747
Fixed a problem with encoding the wildCard and escapeChar attributes of the OGC is like filter (created by FilterFactory.like API) in WFS requests.

Bug fixLuciadRIA

RIA-2739
Fixed a problem with a predicate function created by FilterFactory.toFeaturePredicate API, that is based on an OGC IsLikeOperator filter (created by FilterFactory.like) where the predicate function disregards the filter's matchCase attribute.

Bug fixLuciadRIA

RIA-2480
Fixes an instance where TransformationFactory.createTransformation threw an error

Bug fixLuciadRIA

RIA-1435
Performance of the clustering functionality has been improved by avoiding to re-cluster features when panning in a 3D view or when the map scale has not changed significantly.

Bug fixLuciadRIA

RIA-2696
Fixed an issue where RIA would call the constructor of LayerTreeNode subclasses with invalid arguments.

Bug fixLuciadRIA

RIA-1718
Fixed a problem in the clustering functionality when it is not possible to override the default noClustering parameter by a class specific configuration. This situation happens when a ClusteringTransformer is defined with defaultParameters.noClustering set to true.

Bug fixLuciadRIA

RIA-2698
Fixed an issue where it was difficult to select lines that overlap with polygons on a WebGLMap.

Bug fixLuciadRIA

RIA-1399, RIA-1637, RIA-2530
Fixed issue where large icons could not be used in WebGL view. The icons are resized according to the size specified by the user or the maximum supported size before they are drawn on the map. Additionally, a message that states this is logged in the browser's console.

Bug fixLuciadRIA

RIA-2692
The "Projection" sample no longer needs the "swapAxes" flag on the WMS models for the "Lambert Azimuthal Equal Area" and "Transverse Mercator" projections. Both LuciadRIA and LuciadFusion apply to correct axis ordering for these projections.

Bug fixLuciadRIA

RIA-2458
Fixed a problem in a software-rendered map when a complex stroke style, defined with decorations and a regular pattern of a relative length, is incorrectly drawn. In this case, decorations reduce the available space which would cause the regular pattern not to fit anymore.

Bug fixLuciadRIA

RIA-2479
Fixed a problem in canvas maps when a complex stroke's elliptical arc, defined with an ArcPattern, was drawn as a circle arc.

Bug fixLuciadRIA

RIA-2523
Fixes incorrect z value of Shape#focusPoint for bounds and certain other shapes in 3D maps

Bug fixLuciadRIA

RIA-2547
GMLCodec will throw an error when the reference of decoded data is not recognized, instead of defaulting to the reference WGS:84. When such a situation happens, please register the unrecognized reference first, using ReferenceProvider.addReference(ReferenceProvider.parseWellKnownText(wkText, authorityName, authorityCode)).

Bug fixLuciadRIA

RIA-2460
Controller labels can be now de-conflicted together with other labels. When a controller draws labels with LabelStyle.group explicitly set to "DEFAULT" or a group that is used with other labels then the labels drawn by the controller are subject to the de-cluttering mechanism. By default controller labels are drawn on top of other labels.

Bug fixLuciadRIA

RIA-2308
Labels drawn by a controller are now placed above drawings painted by the controller.

Bug fixLuciadRIA

RIA-2601
Fixed an issue when the BBOX filter used for WFS spatial queries is out of accepted range. The problem used to happen when the view bounds crosses the anti meridian.

Bug fixLuciadRIA

Fixed an issue where the map would flicker when you resize the browser in Edge.

Bug fixLuciadRIA

RIA-2612
Fixed an issue where a 3D WebGLMap resulted in a black screen when using an Intel HD GPU on a 4K monitor on Chrome.

Bug fixLuciadRIA

RIA-2590
The matchCase attribute of the "is like" filter expression created by FilterFactory.like is now properly encoded in query requests.

Bug fixLuciadRIA

RIA-2578
WKTReferenceParser didn't interpret the latitude origin for Cassini projections correctly. This also impacted ReferenceFactory for EPSG references EPSG:2314, EPSG:3068, EPSG:3140, EPSG:3377-3385, EPSG:4390-4398, EPSG:24500, EPSG:28191, EPSG:28193 and EPSG:30200.

Bug fixLuciadRIA

RIA-2579
Fixes a problem with corrupted balloon's anchor when a feature does not exist in the layer's model.

Bug fixLuciadRIA

RIA-2573
Fixes a bug in EllipsoidalGeodesy and SphericalGeodesy that would yield incorrect results when using the distance3D method.

Bug fixLuciadRIA

RIA-2576
Fixes Methods of GeoJsonCodec missing in TypeScript def have been added

Bug fixLuciadRIA

RIA-2572
Fixes a bug that prevented luciad.transformation.LocationMode from being used in TypeScript

Bug fixLuciadRIA

RIA-2571
Fixes TileSetAttributionProvider#getAttributionStrings being mentioned as TileSetAttributionProvider#getAttributionString in the Typescript def, making it impossible to use that method when using Typescript

Bug fixLuciadRIA

Restoring the tilt (pitch) of the camera in 3D WebGLMaps using right mouse drag didn't work well

Bug fixLuciadRIA

RIA-2481
Correction in documentation code snippets related to 3D tiles layers construction.

Bug fixLuciadRIA

RIA-2533
Fixed problem with performance of drawing partially visible complex stroke lines on canvas maps.

Bug fixLuciadRIA

RIA-2532
Partially visible lines with dash pattern are now drawn without visual artifacts when panning or zooming on canvas maps.

Bug fixLuciadRIA

RIA-2527
Balloons for features above terrain appear now in expected place.

Bug fixLuciadRIA

RIA-2529
You can use FeaturePainterUtil to apply selection on lines with complex stroke style.

Bug fixLuciadRIA

RIA-1636, RIA-1411
You can now configure outsideTimeRangeWeight on TrajectoryPainter. This option configures the weight in the density map of parts of lines that are outside of the configured time window. The default is 0.01, resulting in the same visualization as before. Setting this option to 0 completely removes parts outside of the time window from the density.

Bug fixLuciadRIA

RIA-2521
Fixed an issue when query requests are called twice on adding a layer to a map.

Bug fixLuciadRIA

RIA-2513
Fixed an error in the documentation of BasicCreateController.onObjectCreated. It did not indicate that it might return a Promise<Boolean> as well as a Boolean.

Bug fixLuciadRIA

RIA-2505
Fixed an issue when KML data is incorrectly decoded above terrain.

Bug fixLuciadRIA

RIA-1602
Improved the accuracy of the curvature of the top and bottom plane of large extruded shapes.

Bug fixLuciadRIA

RIA-2482
In some cases, parts of the outline of polygons was missing in 3D. This is now resolved.

Bug fixLuciadRIA

RIA-2483
Fixed an issue where the AirspaceShapeProvider returned a faulty result when the trajectory ended on the border of an airspace

Bug fixLuciadRIA

Fixed an issue with devices that support touch events. On these devices, a larger interaction radius would also be used when editing with the mouse. Now, the larger interaction radius is only used for touch events.

Bug fixLuciadRIA

RIA-1602
The accuracy of the top and bottom of extruded shapes along the earth's curvature was increased. This avoids some intersection with terrain. Note that extruded shapes can still intersect with terrain because of low-quality terrain, or because the bottom is actually lower than the terrain itself.

Bug fixLuciadRIA

RIA-2469
Releasing handlers to ShapeProvider when FeatureLayer is removed from a map.

Bug fixLuciadRIA

RIA-2261
Fixed an issue in the label de-cluttering algorithm when the padding property defined in a label style was not correctly used. The padding is used to apply an invisible border around labels so that de-cluttering algorithm has more chances to reject neighboring labels.

Bug fixLuciadRIA

RIA-2467, RIA-2917
Fixed an issue with fitting on bounds that have (near) 0 width/height, when using a WebGLMap. This issue was a regression, introduced by improvement RIA-2276.

Bug fixLuciadRIA

RIA-2471
Fixed an issue when using elevation data defined in feet instead of meters. In some cases, combining this elevation with an imagery tileset resulting in wrong elevation.

Bug fixLuciadRIA

RIA-2463
Fixed an issue when incorrect level-of-detail bounds is computed in certain situations for spatial queries when a layer uses LoadSpatially strategy on 3D maps with multiple scale levels.

Bug fixLuciadRIA

RIA-2337
Fixed an issue when draping content defined in a non-WGS84 geodetic datum and ellipsoid. Floating draped content could happen when you had a combination of layers (elevation, imagery or vector) specified in a WGS84 and non-WGS84 geodetic datum.

Bug fixLuciadRIA

RIA-2440
Fixed a bug where EPSG:3996 would be misrepresented.

Bug fixLuciadRIA

RIA-2455
Fixed an issue when painting selected lines painted with TrajectoryPainter. These selected lines didn't apply the head and trail highlighting effect. Instead it used to paint the line with a single solid color.

Bug fixLuciadRIA

RIA-2453
Fixed an issue with memory leak when destroying a map. FeatureLayer releases now its underlying WorkingSet object.

Bug fixLuciadRIA

RIA-2343
EditController and CreateController now draw labels for features being created and edited.

Bug fixLuciadRIA

RIA-2445
Fixed an issue when feature layers with different references based on a Well Known Text are incorrectly displayed.

Bug fixLuciadRIA

RIA-2444
Fixed an issue with MapNavigator.rotate. It would throw an error if the 3D globe was not under the top-left pixel of the map.

Bug fixLuciadRIA

RIA-2439
Fixed an issue with alignment of multi-line text drawn by geoCanvas.drawText in WebGL maps. The TextStyle.textAnchor property controls how every element of a multi-line text is horizontally aligned.

Bug fixLuciadRIA

RIA-2438
Fixed an issue in WebGL maps when a multi-line text drawn by geoCanvas.drawText overlap each other.

Bug fixLuciadRIA

RIA-2427
Fixed an issue when painting a feature with 3 or more icons. In that case, you could get errors resulting in obsolete icons stuck on the screen, or icons not showing up.

Bug fixLuciadRIA

RIA-2428
Fixed an issue where the lon/lat boundaries calculation of some projections (Dutch stereographic, stereographic and Albers equal-area conic projections) failed.

Bug fixLuciadRIA

RIA-2226
Fixed an issue where NodeJS imports (require('fs'), require('path') and require('crypto')) are included when importing a WebGLMap. While these require calls were never evaluated, module bundlers would complain about them (as they can not resolve these modules).

Bug fixLuciadRIA

RIA-2306
Fixed an issue in 3D maps where labels created by a controller jump between possible positions.

Bug fixLuciadRIA

RIA-2416
type: Removed the zOrder setting from ParameterizedPointPainter and ParameterizedPointStyle. These were accidentally made public, but didn't have any effect. They can't have effect because of how the technical implementation works.

Bug fixLuciadRIA

RIA-2364
The wave pattern with a relative width is now correctly painted in canvas maps.

Bug fixLuciadRIA

RIA-2314
Fixed an issue where bounds larger than 180 degrees wide were painted incorrectly on a WebGLMap.

Bug fixLuciadRIA

RIA-2363
The arrow pattern is now correctly painted in canvas maps when a complex stroke style object contains different colors for line and fill properties.

Bug fixLuciadRIA

RIA-2292
Fixed an issue where errors were thrown when editing geometry with many co-located points.

Bug fixLuciadRIA

RIA-2413
Fixed an issue where, in some cases, creating a bounds with clicks would not stop immediately when releasing the mouse button.

Bug fixLuciadRIA

RIA-2315
Fixed issues with creating and editing geodetic bounds across the dateline.

Bug fixLuciadRIA

RIA-2310
The map's scale now takes into account projection's unit of measure into account.

Bug fixLuciadRIA

RIA-2370
Fixed a case where editing of military symbols with hatch patterns, icons and labels on a WebGLMap would result in an inconsistent state.

Bug fixLuciadRIA

RIA-2352
Fixed additive refinement not properly loading data in some cases, for OGC 3d tiles.

Bug fixLuciadRIA

RIA-2349
Fixed a regression with certain GLTF files where you would get an error message stating that setPosition is undefined.

Bug fixLuciadRIA

RIA-2335
Fixed an problem when painting multiple icons for a single feature in a WebGLMap. In some cases, this resulted in an error, and possibly some discrepancies on the screen: missing icons or too many.

Bug fixLuciadRIA

RIA-2302
Fixed the parsing of color information in KML files. Previously, certain colors would be parsed as numbers instead of strings, causing certain placemarks to be the wrong color. All colors are now properly parsed as strings instead.

Bug fixLuciadRIA

RIA-2318
classList polyfill has been re-added to the sample code, because classList support is only partial in IE11, and this caused the LayerControl in IE11 to behave incorrectly in 2018.0+

Bug fixLuciadRIA

RIA-2309
Fixed problem with maxFeatures parameter in WFSFeatureStore when WFS version is "2.0.0" or greater. LuciadRIA now sends the WFS GetFeature request with COUNT parameter when a user wants to limit the number of features returned from WFS service. For more details, please consult WFSFeatureStore.query and WFSFeatureStore.spatialQuery API.

Bug fixLuciadRIA

RIA-1296
Preventing from executing multiple parallel WFS requests when a map uses LoadSpatially strategy.

Bug fixLuciadRIA

RIA-1134
Extruded shapes with a line as base shape (polyline, arc or circular arc) were not filled, even when using a fill style. This is now resolved. The sides of extruded lines are now filled. The top and bottom of the extruded line is not filled of-course.

Bug fixLuciadRIA

RIA-2286, RIA-2039
In some cases, extruded shapes with a line as base shape (polyline, arc or circular arc) could become closed when they were big (larger than 2 degrees). This is now resolved. Extruded lines are never closed.

Bug fixLuciadRIA

RIA-2289
Default type for model descriptor of image & tileset models should always be RasterDataType.IMAGE. This wasn't the case and has been changed by this fix

Bug fixLuciadRIA

RIA-2283
Fixed problem with measuring label text size when font changes.

Bug fixLuciadRIA

RIA-2271
Fixed an issue in WebGLMap when using icons with offsets larger than 128, or anchors larger than 256. The offsets and anchors were clamped to these ranges. Now, they can be much larger.

Bug fixLuciadRIA

RIA-2024
The outlines of extruded shapes with no fill are now properly painted in 3D. Before, only the base shape was painted in this case.

Bug fixLuciadRIA

RIA-2275
Fixed an issue where an Error was thrown when the user clicked outside of the Map's projection bounds while creating a Bounds shape.

Bug fixLuciadRIA

RIA-2267
Using subdomains in a WMSTileSetModel now works as expected. Before this fix, the WMSTileSetModel constructor would throw an error when you tried to specify a getMapRoot with a subdomain pattern.

Bug fixLuciadRIA

RIA-2264
Fixed TypeScript definition & documentation for Pointlabelstyle, PinStyle & TextStyle:
  • widths for TextStyle & PinStyle are now defined as number instead of string in docs & Typescript def, in correspondence with other numeric widths in LuciadRIA
  • Typescript def now requires position property to be a valid PointLabelPosition or array of PointLabelPositions
  • docs not also mention position property should be a valid PointLabelPosition or array of PointLabelPositions
  • docs now correctly mention PointLabelPosition.NORTH & PointLabelPosition.SOUTH instead of PointLabelPosition.ABOVE & PointLabelPosition.BELOW

Bug fixLuciadRIA

RIA-2263
Fixed a faulty AMD module import resulting from RIA-2238

Bug fixLuciadRIA

Fixed TypeScript definition for Layer.getModelBoundsVisibleOnMap(). It should be a function returning a Bounds, not a property of type Bounds.

Bug fixLuciadRIA

RIA-2259
Documentation & TypeScript declaration for Store#remove previously mention String, Number or a Promise to String / Number as possible return values while actual implementations returned Boolean or Promise to Boolean. Documentation & TypeScript declaration have been changed to correspond with implementations.

Bug fixLuciadRIA

RIA-2255
Fixed an issue where image tiles were not always refined when zooming in. This issue showed up when using a Web Mercator tileset in WebGL.

Bug fixLuciadRIA

Fixed TypeScript definition for RasterTileSetModel.getImage. The onError callback takes 2 arguments, not one.

Bug fixLuciadRIA

Added Typescript missing definitions for UrlTileSetModel.

Bug fixLuciadRIA

RIA-2240
Improved stability and flexibility of 3d tiles metadata decoding capability's detection. It now accounts for empty lines / spaces / tabulations before the json body.

Bug fixLuciadRIA

RIA-2238
Fixed an issue with multitouch gestures on devices that support force touch (aka 3D touch). You had to apply a lot of pressure before the gesture was recognized.

Bug fixLuciadRIA

RIA-2237
GMLCodec has been added to Typescript definition file.

Bug fixLuciadRIA

Fixed an issue with the TypeScript definition for Controller.onKeyEvent. This function accepts a KeyEvent, not a GestureEvent.

Bug fixLuciadRIA

RIA-478
Fixed an issue with freezing application for a while when model's Store does not return a feature id in reaction to CRUD operations.

Bug fixLuciadRIA

RIA-2221
Fixed an issue with getting duplicated features when KMLModel is re-queried.

Bug fixLuciadRIA

RIA-2223
Fixed problem with rendering features drawn by ParameterizedLinePainter when the shapes reference is the same as the map reference.

Bug fixLuciadRIA

RIA-2024
Use the default color for drawing lines when LineStyle.color property is set to null.

Bug fixLuciadRIA

RIA-2197
Improved support and performance for 3D tiles dataset, mainly ones having tiles with large triangle count.

Bug fixLuciadRIA

RIA-2195
Errors that are related to HTTP request that may occur when creating OGC3DTilesModel are reported now in the rejected promise as RequestError object.

Bug fixLuciadRIA

RIA-2200
Fixed problem with setting PointCloudStyle.scalingMode. Now it is possible to use ScalingMode.PIXEL_SIZE mode for point cloud data visualization.

Bug fixLuciadRIA

Added TypeScript definition for FeaturePainter.invalidateById.

Bug fixLuciadRIA

RIA-2121
Fixed an issue with setting a style for Circular Arc and Circle shapes in BasicFeaturePainter.

Bug fixLuciadRIA

RIA-2137
Vertical alignment of DrawText now works correctly for multiline texts in WebGL maps

Bug fixLuciadRIA

Fixed TypeScript definition: The subdomains option for UrlTileSetModel's constructor is now correctly marked as optional.

Bug fixLuciadRIA

RIA-2046
Fixed an issue in WebGL maps of showing on-path labels associated with relatively short geometries.

Bug fixLuciadRIA

RIA-2131
Symbology Encoding painter supports Rotation parameter when drawing image symbols.

Bug fixLuciadRIA

RIA-2130
Corrected an issue where LuciadRIA threw an error when invalidating a RasterImageModel or when altering a property of WMSImageModel.

Bug fixLuciadRIA

RIA-2122
Double-clicking on a layer in the LayerTreeControl outside of the label has been re-enabled. Double-clicking is now disabled only for the "visibility" & "more actions" buttons. This prevents the fit being accidentally triggered when clicking these buttons while still allowing a fit by double-clicking anywhere else on the layer.

Bug fixLuciadRIA

Added TypeScript definition for ShapeType.SECTOR.

Bug fixLuciadRIA

Added documentation on ContextMenu.items for items that are separators. Also updated the TypeScript definition for ContextMenuItem.

Bug fixLuciadRIA

Added TypeScript definitions for static functions on luciad/util/Promise.

Bug fixLuciadRIA

Added Controller.onDrawLabel to RIA's TypeScript definition.

Bug fixLuciadRIA

RIA-1696
Fixed green atmosphere painting when using a WebGLMap with Firefox 51 or later.

Bug fixLuciadRIA

RIA-1822, RIA-1837
Fixed an issue when labels were not rendered for geometries that were close or over the horizon in 3D views.

Bug fixLuciadRIA

RIA-2069
Fixed an issue where features were not rendered correctly in Webmercator with non-0 central meridian.

Bug fixLuciadRIA

RIA-2080
Fixed an issue when using a polar stereographic projection with a true scale latitude almost on the pole as world reference wouldn't work.

Bug fixLuciadRIA

RIA-1973
The point visibility check is improved for 3D scenes. In certain cases Map.mapToViewTransformation.transform() could throw OutOfBoundsError for a visible 3D point.

Bug fixLuciadRIA

RIA-2107
Fixed an issue where bounds could not be created using ShapeFactory.createShape, and by extension the BasicCreateController.

Bug fixLuciadRIA

RIA-2106
In the ECDIS Sample, changes to Shallow Contour, Safety Contour and Deep Contour in the UI are now propagated to the SLD that is sent to the server. At startup, the correct buttons are now made active.

Bug fixLuciadRIA

Fixed an issue where artifacts (holes) were visible on edges between adjacent raster tiles.

Bug fixLuciadRIA

RIA-2089
Fixed an issue with License#loadLicenseFromUrl. This method of loading the license broke by changes introduced for RIA-2005 (in 2017.1.03).

Bug fixLuciadRIA

RIA-2083
Fixed an issue in the API documentation for MapNavigator.zoom. Values for factor larger than 1 cause the map to be zoomed in instead of zoomed out.

Bug fixLuciadRIA

Added the subdomains option to UrlTileSetModel's constructor in the LuciadRIA TypeScript declaration file.

Bug fixLuciadRIA

RIA-2060
Added the dataType and samplingMode properties to RasterTileSetModel in the LuciadRIA TypeScript declaration file.

Bug fixLuciadRIA

Fixed an error in the LuciadRIA TypeScript definition: LayerTreeNode did not implement luciad.util.Evented.

Bug fixLuciadRIA

Fixed a typo in the LuciadRIA TypeScript definition: MapNavigator#rotate takes a targetRotation option instead of a targetLocation.

Bug fixLuciadRIA

RIA-2019
WKTReferenceParser didn't parse references using the azimuthal equidistantprojection correctly.

Bug fixLuciadRIA

RIA-2041
Corrected version declaration for GML namespace when used for WFS requests with OGC filters.

Bug fixLuciadRIA

RIA-2459
Fixed an issue with RasterTileSetLayer: for maps with a stretched aspect ratio (width >= 3 * height), tile selection was incorrect in some cases.

Bug fixLuciadRIA

RIA-2033
Fixed an issue in WebGL maps when an error is thrown when anchor position is not provided due to excessive label size.

Bug fixLuciadRIA

RIA-2032
WFS requests for versions 2.0.x do not contain the xmlns:ogc namespace declaration anymore. WFS servers may reject such requests due to unexpected namespace.

Bug fixLuciadRIA

RIA-2026
Fixed an issue when drawing a label for a shape that is an empty ShapeList.

Bug fixLuciadRIA

RIA-2023
Fixed an issue when selecting objects that were "above terrain". It was sometimes not possible to select such objects in 3D.

Bug fixLuciadRIA

RIA-2017
Fixed an issue where a WMSImageLayer would jitter slightly while panning slowly.

Bug fixLuciadRIA

RIA-2015, RIA-1998
Fixed an issue with selecting lines painted with TrajectoryPainter or ParameterizedLinePainter using a range (for example a time range). It was sometimes not possible to select these lines when clicking on the line close to the end of that range.

Bug fixLuciadRIA

RIA-2005
Fixed an issue with License.loadLicenseFromUrl: it incorrectly returned a Dojo Promise (without a .catch function) instead of A+ Promise.

Bug fixLuciadRIA

RIA-2004
Fixed an issue with RasterImageLayer where, when panning erratically, the image might be rendered at the wrong location.

Bug fixLuciadRIA

Fixed an issue with the sample GetFeatureInfoController: it would keep showing the 'loading' cursor when no feature was clicked.

Bug fixLuciadRIA

Fixed an issue in LuciadRIA's TypeScript definition: Ellipse did not extend Shape.

Bug fixLuciadRIA

RIA-1979
The product version in package.json has been fixed; leading zeros in the patch number are now removed.

Bug fixLuciadRIA

RIA-1985
The startSampleServer scripts now also work on Java 9.

Bug fixLuciadRIA

RIA-1916
ShapeProvider.invalidateAll does not trigger any more the model query reprocess.

Bug fixLuciadRIA

RIA-1954
Balloon functionality takes into account the position of provided shape when clicking on a feature.

Bug fixLuciadRIA

RIA-1748
Grid is no longer rendered incorrectly in Webmercator with non-0 central meridian.

Bug fixLuciadRIA

RIA-1971
ClusteringTransformer no longer throws an error when a model is updated and that model or its store always returns a Promise from its query method.

Bug fixLuciadRIA

RIA-1719
Fixed a bug when using TrajectoryPainter or ParameterizedLinePainter when changing a feature's properties. In that case, the styling did not reflect the property change.

Bug fixLuciadRIA

RIA-1957
Fixed a bug where the BingMapsTileSetModel did not always load the adequate tile for the zoom level the map was showing. Because of that, a less detailed tile was shown in arbitrary locations.

Bug fixLuciadRIA

Typescript definition: LayerTreeNode's typing declaration now indicates that it implements Evented

Bug fixLuciadRIA

Typescript definition: Fixed module declaration of luciad/view/input/GestureEvent

Bug fixLuciadRIA

RIA-517
The CreateController now correctly shows the snap icon for the initial point.

Bug fixLuciadRIA

RIA-1934
The 'snap-to-scale-level' that happens whenever a layer is added to the map, now respects map.mapNavigator.defaults.snapToScaleLevels.

Bug fixLuciadRIA

RIA-1931
GetFeatureInfo requests using the FeatureInfoController (sample code) can now handle mime types that include charset information.

Bug fixLuciadRIA

RIA-1889
Fix for misplacing labels when FeaturePainter draws more than a single shape for a feature.

Bug fixLuciadRIA

RIA-1915
For hardware-accelerated maps the FeaturePainter.drawLabel function passes shape parameter provided by layer's ShapeProvider. That way the the meaning of the shape parameter is consistent for both the hardware-accelerated maps and canvas maps.

Bug fixLuciadRIA

RIA-1910
Resolved errors when re-using a ParameterizedLinePainter or TrajectoryPainter instance in multiple maps (for example, switching from a 2D map to a 3D map).

Bug fixLuciadRIA

RIA-1908
Fixed errors in LuciadRIA's TypeScript definition that triggered when running a TypeScript compiler with the noImplicitAny option enabled.

Bug fixLuciadRIA

RIA-1900
Fixed an issue where drag events were not propagated to the map's controller if the controller ignored the first drag event.

Bug fixLuciadRIA

RIA-1860
Fixed various minor issues with the Typescript definition (added missing modules, corrected signatures...).

Bug fixLuciadRIA

RIA-1886
Fixed an issue where labels drawn by a Controller would jitter when drawn on a WebGLMap.

Bug fixLuciadRIA

RIA-1875
Fixed issue when editing complex polygons with many points.

Bug fixLuciadRIA

RIA-1876
Fixed an error when FeaturePainter#invalidateById is used on hardware-accelerated maps.

Bug fixLuciadRIA

RIA-1877
Fixed an error when ShapeProvider invalidation methods are used on hardware-accelerated maps.

Bug fixLuciadRIA

RIA-1652
FeaturePainter#invalidateById method is exposed in the API documentation.

Bug fixLuciadRIA

RIA-1858
Fixed an issue with not showing labels at the end of X axis on vertical maps.

Bug fixLuciadRIA

RIA-1853
Fixed casing of some http-headers. This fixes the missing elevation bug in Chrome 60 and up.

Bug fixLuciadRIA

RIA-990
Re-ordering of layers within the same layer group no longer causes all data to be reloaded or the "NodeAdded" and "NodeRemoved" events to be triggered

Bug fixLuciadRIA

RIA-1834
Axis for vertical views are painted without blurry edges.

Bug fixLuciadRIA

RIA-1848
Corrected the TypeScript method signatures for Map.pickAt() and Map.pickClosestObject().

Bug fixLuciadRIA

RIA-1846
Fixed errors when using WebGLMap with a map <div> that is not visible (width or height 0). While harmless, you could get errors while labeling or during selection in this case.

Bug fixLuciadRIA

RIA-1817
GeoBuffer's bounds were not always covering its contour when using a geodetic reference. This was also preventing the GeoBuffer.contains2D method from working properly. GeoBuffer's bounds are now calculated correctly.

Bug fixLuciadRIA

RIA-1840
Refreshing the left border decorations after resizing a vertical view.

Bug fixLuciadRIA

RIA-1821
For some type and function combinations, an ifThenElse-expression inside another expression was not considered valid.

Bug fixLuciadRIA

RIA-1792
Bounds shapes with width greater than 180 degrees that stretch over the 180th meridian are drawn correctly now.

Bug fixLuciadRIA

RIA-1777
Making the GoogleLayer invisible now works correctly.

Bug fixLuciadRIA

RIA-1772
Corrected API documentation for GeoCanvas method signatures: drawIcon and drawText.

Bug fixLuciadRIA

RIA-1768
Geodetic bounds with a height of (approximately) 180 degrees were not always transformed correctly to a reference with a different geodetic datum.

Bug fixLuciadRIA

RIA-1646
The baseURL parameter is now correctly passed as an argument when getTileURL() is called on WMSTileSetModel. Before the fix, the parameter was undefined, making it harder to override the method.

Bug fixLuciadRIA

RIA-1747
The ReferenceProvider now picks up the central meridian parameter when a web mercator reference is created by means of a WKT string.

Bug fixLuciadRIA

RIA-1745
HandleEventResult#clearRequestFinish cleared the REQUESTDEACTIVATION flag instead of the REQUESTFINISH flag.

Bug fixLuciadRIA

RIA-1736
For drawLabelInPath with "inView" set, labels for shapes outside of the view could end up without any labels when the their shapes are again visible. This has been fixed.

Bug fixLuciadRIA

RIA-1730
Removed cursor: default; CSS property on LuciadRIA DOM elements. This allows you to override the cursor used on the Map.

Bug fixLuciadRIA

RIA-1706
Fixed an issue where, in some cases, the GestureEvent.modifier property was not properly set.

Bug fixLuciadRIA

RIA-1704
For drawLabelInPath with "inView" set, labels for shapes outside of the view could end up on the Greenwich Meridian. This has been fixed.

Bug fixLuciadRIA

RIA-1675
Fixed an issue where non-animated versions of MapNavigator operations did not interrupt ongoing animations.

Bug fixLuciadRIA

RIA-1667
Fixed an issue when using a combination of clustering, map destroys and model updates. Errors could occur when you used model updates on a layer with clustering on after its map was destroyed.

Bug fixLuciadRIA

RIA-1622
Fixed an issue where, sometimes, a pitch-related Error was thrown during fitting.

Bug fixLuciadRIA

RIA-1630
Fixed an issue when updating line shapes that were painted with a TrajectoryPainter or ParameterizedLinePainter. Changing the shape (for example inserting a point) and doing a model update (using FeatureModel.put) resulted in an error and no visual update of the shape.

Bug fixLuciadRIA

RIA-1642
Fixed an issue where input on IE9 could be off by several pixels.

Bug fixLuciadRIA

RIA-1595
Resolved an issue in LoadEverything: on Internet Explorer, there could be an error after invalidating a layer through its QueryProvider.

Bug fixLuciadRIA

RIA-1616
Fixed an issue with the equality filter definition in SLD file, where an expected value is a number. The equality filter definitions are properly evaluated by SE painters when the expected value is a number.

Bug fixLuciadRIA

RIA-1615
Fixed an issue with not taking into account the matchCase parameter in filter definitions in SLD files. The matchCase parameter is now taken into account while evaluating features by painters created by SEPainterFactory (based on SLD files).

Bug fixLuciadRIA

RIA-1613
Fixed an issue with filter definitions in SLD file, where the expected value is a string starting with a number value. The filter definitions in SLD files are properly evaluated by SE painters when the expected value is a string starting with a number value.

Bug fixLuciadRIA

RIA-1631
ClusteringTransformer: selected objects no longer disappear when zooming in and out while the clustering transformer is configured to not cluster.

Bug fixLuciadRIA

RIA-1418
LuciadRIA can now handle mercator projections with a true scale latitude (mercator variant B).

Bug fixLuciadRIA

RIA-1603
Mouse input no longer uses the PointerEvent API when available. This resolves issues with mouse input on RIA maps embedded in MFC components or legacy browsers.

Bug fixLuciadRIA

RIA-1576
Map.pickAt no longer returns duplicate results.

Bug fixLuciadRIA

RIA-1600
Fixed an issue where 3D icons were not rendered by the FeaturePainter when using the CreateController.

Bug fixLuciadRIA

RIA-1455
Fixed an issue where a balloon that was clicked open, would not be closed when the associated feature got filtered out.

Bug fixLuciadRIA

RIA-1594
Fixed an issue that would cause BingMaps to display camera icons when zoomed in on a WebGLMap.

Bug fixLuciadRIA

RIA-1338
Fixed an issue with displaying large circles in 2D: circles larger than a hemisphere are now correctly filled. Before, the fill of such circles was inverted: the area inside the circle was empty, and the area outside the circle was filled.

Bug fixLuciadRIA

RIA-1590
Fixed an issue with map.restoreState on 3D maps. The rotation of the restored camera state would deviate slightly from the saved camera state. This deviation was especially noticeable for zoomed-out heavily pitched camera positions.

Bug fixLuciadRIA

RIA-996
Added new API whenReady on LayerTreeNode to wait until all processing is reflected on the screen. This includes:
  • Data loading (tiles, features) caused by navigation etc.
  • Feature processing caused by painter invalidations etc.
LayerTreeNode.whenReady returns a promise that resolves when all changes leading up this call are processed and the screen is up-to-date. This can be used to wait for specific changes to be processing completely. Notes that LayerGroup (including map.layerTree) is also a LayerTreeNode, so also has this API available. Example:
      map.mapNavigator.fit({bounds: somewhere});
      map.layerTree.whenReady().then(makeScreenshot);
    

Bug fixLuciadRIA

RIA-1565
Fixed an issue where calling MapNavigator.fit on a map with a GoogleLayer present, would cause the GoogleLayer to not render until the map was zoomed.

Bug fixLuciadRIA

RIA-1570
Fixed a memory leak when using a RasterTileSetLayer in a WebGLMap with frequent model invalidations (for example, changing SLD on a WMSTileSetModel).

Bug fixLuciadRIA

RIA-1571
Fixed an issue where calling map.saveState() on a 3D WebGLMap would throw an error.

Bug fixLuciadRIA

Fixed an issue with calling BasicFeaturePainter.setStyle when the painter is already attached to a layer.

Bug fixLuciadRIA

RIA-1413
Fixed an issue where input events could be off-target when the map was inside a scrollable container.

Bug fixLuciadRIA

RIA-1555
A feature layer with levels of detail on its painter is now updated correctly when you toggle its visibility.

Bug fixLuciadRIA

RIA-1551
GridLayer will now also fire PaintRepresentationVisibilityChangedEvents.

Bug fixLuciadRIA

RIA-1550
LuciadRIA loads now resources properly when cache-busting is enabled, even when window.__LUCIAD_ROOT__ is not set.

Bug fixLuciadRIA

RIA-1538
Fixed an issue with the deprecated MapNavigator.panTo in 2D, and the deprecated MapNavigator.zoomTo in 3D. Note that it is recommended to use the new MapNavigator.pan and MapNavigator.zoom instead of these deprecated functions.

Bug fixLuciadRIA

RIA-1529
Fixed fitting with allowWarpXYAxis set to true on maps with cartesian references.

Bug fixLuciadRIA

RIA-1462
The helper line used during GeoBuffers creation follows now the mouse cursor properly. This issue was caused by a bug introduced when RIA-1308 was fixed.

Bug fixLuciadRIA

RIA-1015
When using WebGL maps, it is now possible to submit a different shape than the feature shape to the labelCanvas in your FeaturePainter.paintLabel. However, it has the following limitations :
  • Features that aren't submitted to the geoCanvas in your FeaturePainter.paintBody will not be labeled
  • In 3D, the submitted shape has to be either a point or one of the shapes submitted in the paintBody for the corresponding feature

Bug fixLuciadRIA

RIA-1059
When using WebGL maps, if you submit a ShapeList in your FeaturePainter.paintLabel, it will use the largest shape instead of the first one to determine the label location.

Bug fixLuciadRIA

RIA-1442
LuciadRIA now also configures CORS headers when the application is served from port 80 and tries to access imagery services on the same server but served from a different port.

Bug fixLuciadRIA

RIA-1440
Airspaces in the vertical view are now updated correctly after editing a trajectory in the Vertical View sample.

Bug fixLuciadRIA

RIA-1428
In some cases, WebGL views did not show the latest state of the model. This could happen, for instance, when disabling or enabling clustering.

Bug fixLuciadRIA

RIA-1427
Editing a shape with a fill and no stroke on a WebGLMap could sometimes make it appear incorrectly on the map.

Bug fixLuciadRIA

RIA-1425
Grid scale is updated accordingly to the zoom level even if all the map bounds don't change

Bug fixLuciadRIA

RIA-1349
Fixed an issue where it was sometimes impossible to select features that are obscured by a feature from an unselectable layer. Note that Map.pickAt now also returns features from layers that are not selectable. If you only want to retrieve selectable features, filter the 'pick info' objects that are returned by Map.pickAt, using pickInfo.layer.selectable.

Bug fixLuciadRIA

RIA-1393
CORS HTTP headers are now only configured when image data is loaded from another domain. CORS headers are only required when images are loaded from other domains. However, LuciadRIA configured them always, even when images were loaded from the local domain. The use of these headers in combination with web authentication methods (cookies, for example) could result in credential information being omitted from the HTTP requests, even when the requests were sent to the same domain that hosts the LuciadRIA application. This is now no longer the case.

Bug fixLuciadRIA

RIA-1284
Fixed a rare exception that could occur when invalidating a ShapeProvider for a layer that uses a LoadSpatially strategy.

Bug fixLuciadRIA

RIA-1347, RIA-1246
The selection of unclustered features is now preserved when you navigate in a view while clustering is active.

Bug fixLuciadRIA

FeatureLayer: changing the transformer property before adding the layer to a map now works as expected.

Bug fixLuciadRIA

RIA-1336
FeatureLayer: the transformer set trough the transformer constructor option can now also be retrieved trough the transformer property of the layer

Bug fixLuciadRIA

RIA-1401
Rectangular draped icons were not painted correctly: they would appear as square draped icons instead.

Bug fixLuciadRIA

RIA-1396
ClusterTransformer will now keep features rejected by the filter of a FeatureLayer out of clusters. This prevents unwanted features from being included in a cluster feature.

Bug fixLuciadRIA

RIA-1392
The credentials option is no longer ignored when creating a WMSTileSetModel.

Bug fixLuciadRIA

RIA-1352
During label painting, it was possible to have errors logged to the console when drawing labels to an empty ShapeList. This has now been resolved.

Bug fixLuciadRIA

ClusteringTransformer can now handle models where all points are on the same longitude or latitude.

Bug fixLuciadRIA

RIA-1383
During label painting, it was possible to have errors logged to the console when drawing to points that were sub-shapes of other shapes. This has now been resolved.

Bug fixLuciadRIA

RIA-1371
Bounds transformations involving references that use the Oblique Mercator projection don't produce NaN values any more.

Bug fixLuciadRIA

RIA-1372
In 3D, bounds from map.mapBounds always include the poles if they are visible.

Bug fixLuciadRIA

RIA-1359
The Geodesy#interpolate method now produces correct results when using a SphericalGeodesy.

Bug fixLuciadRIA

RIA-773
The LuciadRIA modules in the luciad namespace are now compatible with the r.js JavaScript minifier (cf. http://requirejs.org/). Previously, due to some dojo-specific features, the r.js minifier could not resolve the AMD module dependencies.

Bug fixLuciadRIA

RIA-1332
Fixed performance regression on Internet Explorer when using LoadSpatially (for example for a WFS store).

Bug fixLuciadRIA

RIA-1333
Fix some calculations for Polyconic projection

Bug fixLuciadRIA

RIA-1319
After setting a painter with the FeatureLayer#painter setter, calls to FeaturePainter#invalidate and FeaturePainter#invalidateAll no longer throw errors. This bug in invalidation did not occur when the painter was passed along as one of the options in the FeatureLayer constructor. It only occurred after a painter has been set with the FeatureLayer#painter setter.

Bug fixLuciadRIA

RIA-1079
There is no more artifact for large self-intersecting polygon on hardware-accelerated maps.

Bug fixLuciadRIA

RIA-1308
CreateController updates now GeoBuffers properly after the first creation click.

Bug fixLuciadRIA

RIA-1200
LuciadRIA can now connect to image services that require authentication parameters in the headers of the image request. Previously, there would be errors because LuciadRIA always submitted anonymous requests. It was therefore impossible for example to require basic http authentication for an image request. To enable this functionality, there have been following additions to the API: - luciad/view/style/IconStyle#withCredentials: setting this flag to true will add credentials to the headers of the image request - luciad/model/tileset/UrlTileSetModel: all implementations of a UrlTileSetModel can now make credentialed image request, by setting the optional credentials flag to true - luciad/model/tileset/WMSImageModel: you can now configure this model to submit authenticated image requests

Bug fixLuciadRIA

RIA-1032
There have been various modifications to the luciad/model/codec/GeoJsonCodec decoding functionality to improve the consistency of its API. - A mismatch between the implementation of luciad/model/codec/GeoJsonCodec#decodeGeometry and its documentation has been resolved. The documentation required the first parameter to be a String, however the implementation expected an Object. The implementation now correctly requires a String. When you use an Object instead of a String, a warning method will now be logged to the console. - Two additional methods have been added: GeoJsonCodec#decodeGeometryObject and GeoJsonCodec#decodeObject. Both allow you to decode GeoJson that is represented as an Object instead of as a String. - The GeoJsonCodec#decode method now correctly states that it delegates the decoding of geometries to the #decodeGeometryObject method. If you have overridden the decodeGeometry method, you will need to change this to decodeGeometryObject to avoid warning messages to the console.

Bug fixLuciadRIA

RIA-1301
When using 2D data on a non-standard ellipsoid in a 3D view, it was draped but with a height above ground. This caused the data to shift according to the camera viewpoint.

Bug fixLuciadRIA

RIA-1297
A problem with loading tiff elevation tiles from LuciadFusion was resolved. The tiff tiles could not be loaded if they contained 16-bit signed integers.

Bug fixLuciadRIA

RIA-1300
Showing a balloon for a Shape instead of a Feature now works as expected.

Bug fixLuciadRIA

RIA-1226
Selecting icons by tapping or mouse-click is now more accurate when the icon has an offset.

Bug fixLuciadRIA

RIA-1013
A balloon will now be removed from the map when the layer it corresponds to is made invisible.

Bug fixLuciadRIA

RIA-1052
The ReferenceProvider can now also parse WKT strings that encode a reference with a Gnomonic projection.

Bug fixLuciadRIA

RIA-1028
Improved performance for draped density data in a WebGL view.

Bug fixLuciadRIA

RIA-1008
When updating a feature with the MemoryStore#put method, if the feature is not present in the store, it should be added. Previously, the implementation did not match this documented "upsert" behavior.

Bug fixLuciadRIA

RIA-998
Moving layers in the map's LayerTree is now more robust. Before, in certain situations with multiple nested LayerGroups, it was possible that a Layer would not be visualized on the Map in the correct order after moving it.

Bug fixLuciadRIA

The WorkingSet#getWorkingSetReference method has been removed from the jsdoc API. This method was undocumented, and was part of the documentation due to a documentation processing error.

Bug fixLuciadRIA

RIA-999
The visibility of a layer is now correctly taken into account when selecting features from a map using the Map#pick methods. Previously, if a FeatureLayer was a child of an invisible LayerGroup, features from that Layer could still be selected, even though that FeatureLayer was in turn invisible as well.

Bug fixLuciadRIA

RIA-991
Some colors in KML files were parsed incorrectly, leading to partial evaluation of some KML files. This has now been fixed.

Bug fixLuciadRIA

RIA-989
Map#selectedObjects method returns now data for layers with selected objects only. It used to be like that but the behavior changed accidentally after fixing RIA-885.

Bug fixLuciadRIA

RIA-918
EPSG:32663 now correctly uses an ellipsoidal equidistant cylindrical projection, instead of a spherial one. The spherical equidistant cylindrical projection has identifier EPSG:32662. The default map projection now is EPSG:32662 (spherical). EPSG:4087 is now supported as well.

Bug fixLuciadRIA

RIA-966
The WFSFeatureStore#spatialQuery method now takes into account the maxFeatures and propertyNames options.

Bug fixLuciadRIA

RIA-961
The XML-Encoding of the between, lte, and, gte filters to the OGC Filter 1.0.0 and 1.1.0 standards now works correctly.

Bug fixLuciadRIA

RIA-956, RIA-957
The allowWarpXYAxis parameter will now be ignored when calling mapNavigator.fit on a map with geographic data. This is because stretching or compressing geographic data over the X or Y axis creates an incorrect visualization if the data on the map is geographic: it distorts the properties of the projection of the map's spatial reference. This change also resolves the issue that in some situations a GoogleLayer would no longer be visible after a fit completed where the warping was set to true. This change has no effect on maps with a reference with other units of measure.

Bug fixLuciadRIA

RIA-929
Labeling of lines with an OnPathLabelStyle has now been made more robust. Previously, labels sometimes were not positioned along one or more lines even though there may have been sufficient place to do so.

Bug fixLuciadRIA

RIA-900
Instead of passing the bounds constructor parameter to a WMSTileSetmodel, you can now also use the reference parameter. This makes it easier to create a WMSTileSetModel for which the WMS model extent cannot easily be determined at runtime.

Bug fixLuciadRIA

RIA-932
Fitting on layers when there is a constraint on the map has now been made more robust.

Bug fixLuciadRIA

RIA-915
Fixed an issue where touch event locations were not always correctly calculated when the page is scrolled.

Bug fixLuciadRIA

RIA-917
WMSTileSetLayer#getFeatureInfo no longer throws an unexpected error when the input coordinate is outside the bounds of the model data.

Bug fixLuciadRIA

RIA-885
Map#selectedObjects now correctly returns selected objects from Layers that are children of a LayerGroup.

Bug fixLuciadRIA

RIA-277
You can now rotate text when drawing it to the GeoCanvas. Use the TextStyle.angle parameter.

Bug fixLuciadRIA

RIA-892
The Vertical View sample no longer uses internal classes of LuciadRIA.

Bug fixLuciadRIA

References with a Lambert Conformal projects now properly indicates that a point outside its projection bounds cannot be transformed to a point on the world.

Bug fixLuciadRIA

ReferenceProvider.parseWellKnownText now properly handles WKT strings that refer to ellipsoidal equidistant projections. Previously it returned references that used spherical calculations. Now they use ellipsoidal calculations.

Bug fixLuciadRIA

RIA-873
It is now possible to translate a complex polygon during editing.

Bug fixLuciadRIA

BasicFeaturePainter now also applies default styling when painting Bounds.

Bug fixLuciadRIA

RasterImageLayer now triggers a repaint when its source data changes. For instance, when you change the layers of a WMSImageModel, the view will now be automatically updated.

Bug fixLuciadRIA

RIA-859
Some LuciadRIA classes could not find their resources when LuciadRIA was used with the AMD loader of require.js. This has now been fixed.

Bug fixLuciadRIA

RIA-848
Under certain conditions, when adding a RasterTileSetLayer to a Map, fitting on a certain bounds did not succeed. This was caused by a race-condition bug introduced in 2015.1. This has now been fixed.

Bug fixLuciadRIA

RIA-637
To determine the order of objects when using the Map#[pickAt|pickClosestObject] methods, the selection-status of the object is now correctly taken into account. Selected objects are visualized on top of other objects: to determine interaction, these selected objects are now correctly receiving preference over unselected objects that are visualized below them.

Bug fixLuciadRIA

RIA-745
It is now possible to make a GoogleLayer invisible. Also when panning, the GoogeLayer is not rendered because the Google Maps zoom animation and LuciadRIA Map zoom animation cannot be synchronized.

Bug fixLuciadRIA

RIA-718
When the stroke-style is undefined on a luciad/view/style/ShapeStyle, a default stroke will be used so the object will be visible on the map. Previously, when the stroke was undefined, no default stroking was used; this caused the object to be invisible.

Bug fixLuciadRIA

RIA-785
Touch input was incorrect when the page was scrolled. This has been fixed.

Bug fixLuciadRIA

RIA-783
When editing the shape of polyline, polygon or geobuffer, you can now ctrl-click a point to remove it. You can also still long-press the point to remove it, as before.

Bug fixLuciadRIA

RIA-780
The Luciad logo no longer covers the Google logo in the GoogleLayer Widget sample.

Bug fixLuciadRIA

RIA-740
The visualization of icons and text drawn to the bottom-border, using BorderGeoCanvas#drawIcon or BorderGeoCanvas#drawText respectively, is no longer cut off at where the border meets the Y-axis on the left. This means that part of the icons or text may be visualized in the bottom-left corner where the left and bottom border overlap. This behavior also applies to labels (using BorderLabelCanvas#drawLabel). Do note that this visualization will only be drawn as long as the anchor point is situated the right of the Y-axis. Once this anchor point is moved to the left of the Y-axis, the icons and labels will no longer be visible.

Bug fixLuciadRIA

RIA-734
Dash patterns from stem-lines now start from the border. Previously, the pattern would start from the point on the map. The practical result is that you can interleave dash patterns. When the stems are aligned, even if they would have different lengths, the dash patterns will now no longer "shift" positions since they share a same start point.

Bug fixLuciadRIA

RIA-614
When constructing a FusionTileSetModel, the constructor parameter to configure the number of levels in the model is now taken into account. It was ignored before.

Bug fixLuciadRIA

RIA-754
KML files with combinations of multiple styles could not always be read correctly, causing some KML files not to be read correctly. Parsing of such files has now been made more robust.

Bug fixLuciadRIA

RIA-772
In a KML file, PlaceMark-elements without a geometry will now be silently ignored. Previously, an error would be logged on the console, and the KMLLayer would not be properly visualized.

Bug fixLuciadRIA

Some KML files could not be loaded. Specifically, KML files that contained nested shape lists could not be decoded. This is now fixed.

Bug fixLuciadRIA

RIA-743
It is now possible to label shapes in the FeaturePainter#paintLabel method with arbitrary shapes that do not have a body representation. This did not work in certain edge-cases when the shape of the feature to be labeled was a ShapeList.

Bug fixLuciadRIA

RIA-742
Mouse cursor is now updated correctly when editing GeoBuffers and ShapeLists.

Bug fixLuciadRIA

RIA-721
Labels which are drawn to the bottom border (using FeaturePainter#paintBorderBody) are now no longer cut off at the Y-axis. This is to improve legibility of the label. The behaviour of label decluttering in the border and the visualization of the bodies in the border remain unaltered. This is to preserve the alignment of the border content with the content on the map.

Bug fixLuciadRIA

RIA-634
The TileSetAttributionProvider no longer throws an Error when a Map's LayerTree contains LayerGroup instances.

Bug fixLuciadRIA

RIA-730
Conversion parameters for the European Datum 1950 were corrected for the following references:
  • EPSG:23035
  • EPSG:23036
  • EPSG:23037
  • EPSG:23038
  • EPSG:2206
  • EPSG:2207
  • EPSG:2208
  • EPSG:2209
  • EPSG:2210
  • EPSG:2211
  • EPSG:2212

Bug fixLuciadRIA

RIA-731
ReferenceProvider#isValidReferenceIdentifier now returns true for all documented supported references.

Bug fixLuciadRIA

RIA-633
A luciad.view.google.GoogleLayer can now be added to a LayerGroup.

Bug fixLuciadRIA

RIA-723
Bodies and labels that are painted in the bottom border are now correctly invalidated when calling FeaturePainter#invalidate or FeaturePainter#invalidateAll.

Bug fixLuciadRIA

RIA-685
On IE11, releasing the mouse button outside the browser window now correctly ends the panning of the map.

Bug fixLuciadRIA

RIA-650
Improved robustness for handling input events on Windows 8/IE11.

Bug fixLuciadRIA

RIA-639
The datum for the Google models is now correctly CRS:84.

Bug fixLuciadRIA

RIA-641
Rendering lines with an arrow marker no longer breaks the paint loop.

Bug fixLuciadRIA

RIA-635
Labels of a longitude-latitude grid are now positioned correctly when the Map is configured with a left border.

Bug fixLuciadRIA

RIA-424
A FeatureLayer will no longer query the model when it is added to the map and outside the visible minimum and maximum scale range

Bug fixLuciadRIA

RIA-600
Automatic label placement now correctly takes into account the dimensions of the left border (if any).

Bug fixLuciadRIA

RIA-437
When a GoogleLayer is added to the map, and it is showing the terrain map, you can no longer zoom beyond the 15th zoom level. There is no data beyond that level. The 15th zoom level refers to one of the scale breaks defined by Google.

Bug fixLuciadRIA

RIA-482
After closing a balloon of a a selected object, clicking on the object will now show the balloon again.

Bug fixLuciadRIA

RIA-626
Rendering of military symbols is now correct again (some were not visualized).

Bug fixLuciadRIA

RIA-620
A non-georeferenced view will now render correctly in IE10 that reports to be IE9.

Bug fixLuciadRIA

RIA-616
Is is now possible to select large icons. Previously, it was sometimes difficult to select large icons by clicking near their edges.

Bug fixLuciadRIA

RIA-606
It is now again possible to move layers in the Map`s LayerTree.

Bug fixLuciadRIA

RIA-571
Added support for EPSG:2154 (RGF93 / Lambert-93)

Bug fixLuciadRIA

RIA-476
Click and double click detection in Chrome is now more robust.

Bug fixLuciadRIA

RIA-567
Sample server now again logs normally using SLF4J with java util logging binding.

Bug fixLuciadRIA

RIA-587
jMNDS logging is now turned off. On startup, the startSampleServer script will no longer show the distracting debug logs of the jMNDS component.

Bug fixLuciadRIA

RIA-586
A regression was introduced with RIA-269. This caused zooming in not to work on Firefox. This has now been resolved.

Bug fixLuciadRIA

RIA-584
You can now pass any shape to GeoCanvas#drawText rather than only points. The implementation now reflects the documentation.

Bug fixLuciadRIA

RIA-608
It is now possible to specify multiple styling rules when constructing a GoogleImageModel. In order to do so, use an array of style-rules for the style member of the requestParameters option. Previously, it was only possible to use a single style rule. This was not conform the API of the Google Static Maps API.

Bug fixLuciadRIA

RIA-269
A LuciadRIA-map now works on devices which support MS-pointer and MS-gesture input events. For example, you can now run LuciadRIA in Internet Explorer (10 or higher) on a Microsoft Surface Tablet or on a smart phone with a WP OS.

Bug fixLuciadRIA

RIA-562
When constructing a RasterTileSetLayer with the visible option set to false, no images are requested from the model.

Bug fixLuciadRIA

RIA-577
A TypeError is no longer thrown when trying to pick objects from the map at a location which is outside the projection bounds.

Bug fixLuciadRIA

RIA-572
Correcting documentation of HandleEventResult

Bug fixLuciadRIA

RIA-535
Build scripts for custom builds of the samples now work again.

Bug fixLuciadRIA

RIA-566
Selecting rotated icons is now possible.

Bug fixLuciadRIA

RIA-560
Upgraded dojo to 1.10.x. This version resolves broken touch support in IOS8.

Bug fixLuciadRIA

RIA-553
Corrected EditController API documentation. It now no longer documents private methods.

Bug fixLuciadRIA

RIA-552
This fixes a regression, introduced by RIA-550. An error was thrown when trying to select features of which part of the visualization was text. This was for example the case for objects that were drawn with the drawText() method in the paintBody implementation of a FeaturePainter, or for military symbols which had some text elements).

Bug fixLuciadRIA

The "create" functions on ShapeFactory without coordinate reference have been deprecated. You should always call the create methods with a coordinate reference.

Bug fixLuciadRIA

RIA-548
When icons are positioned on the map, their position is now snapped to an exact pixel location. This avoids anti-aliasing effects.

Bug fixLuciadRIA

RIA-546
Labels do not disappear any more when drawing lines containing begin/end markers.

Bug fixLuciadRIA

RIA-470
The optional requestReference parameter of the WMSTileSetModel constructor was ignored. Furthermore, this parameter could conflict with the reference of the mandatory bounds parameter. To improve the internal consistency of the constructor, this parameter has been removed from the API documentation. Since this parameter was ignored, this will not affect any implementations who may have set this parameter. A warning message is logged to the console if this parameter is used.

Bug fixLuciadRIA

RIA-544
ShapeStyles with a beginMarker or endMarker property now work again. Previously, an error would be thrown and logged to the console.

Bug fixLuciadRIA

RIA-537
It is now possible to correctly edit nested shape lists.

Bug fixLuciadRIA

RIA-538
Shape lists are more robust and can contain empty shapes.

Bug fixLuciadRIA

RIA-534
The luciad.reference.CoordinateReference#equals method now no longer returns false negative responses for some reference comparisons. These faulty comparisons used to occur for example with reference having the ED50 datum.

Bug fixLuciadRIA

RIA-528
ShapeProvider now invalidates correctly when configured through FeatureLayer constructor.

Bug fixLuciadRIA

RIA-529
When the query property on a FeatureLayer is set, any pending query from that layer will be canceled. This resolves a race-condition issue. Before this fix, it was possible that the result of an earlier query would supplant the result of a later query if the response of the former would arrive later than the response of the latter.

Bug fixLuciadRIA

RIA-487
The GeoJsonCodec constructor now behaves like a normal constructor, making it easier to subclass GeoJsonCodec.

Bug fixLuciadRIA

RIA-461
When a balloon refreshes, it now no longer shows multiple close buttons.

Bug fixLuciadRIA

RIA-368
Implementations of FeaturePainter can now have method names that start with "paint". Previously, an error would be thrown because only the method names paintBody and paintLabel were allowed. This restriction was due to a bug in the implementation of FeaturePainter and not due to a hard restriction on naming conventions.

Bug fixLuciadRIA

RIA-452
Detecting whether the user is interacting with text on the map (which was drawn with GeoCanvas#drawText) now no longer always returns true. This improves the selection behavior.

Bug fixLuciadRIA

RIA-451
The context menu is now also enabled on long press, both for touch interaction and mouse interaction. This means that the onCreateContextMenu callback of the featureLayer will now also be invoked when performing a long press.

Bug fixLuciadRIA

RIA-448
WMSTileSetModel no longer sends GetMap requests with an empty EXCEPTIONS parameter.

Bug fixLuciadRIA

RIA-445
Fixed a problem where all features in the layer were rendered (could occur in case of incremental rendering, when features were not labeled)

Bug fixLuciadRIA

RIA-443
PathLabelRotation.NO_ROTATION is now interpreted correctly again.

Bug fixLuciadRIA

RIA-442
Label priorities are now applied correctly again

Bug fixLuciadRIA

RIA-439
Fixed problem with caching of image-based fill patterns for polygons. Now is is possible to use the 'HatchedImageBuilder' to display different images for different polygons.

Bug fixLuciadRIA

RIA-429
Added documentation for the public equals() method to luciad/shape/Shape and luciad/reference/CoordinateReference.

Bug fixLuciadRIA

RIA-420
Fixed a problem with the CreateController that it would ignore a set minimum and maximum pointcount.

Bug fixLuciadRIA

RIA-483
When a FeatureLayer is outside its allowed scale range, features will no longer be selectable. Previously, when a layer was outside its valid scale range, these features were still selectable, even though they were invisible.

Bug fixLuciadRIA

RIA-409
When calling invalidateAll on a FeaturePainter, all labels will be refreshed when the incrementalRendering layer option is set to true.

Bug fixLuciadRIA

RIA-408
The hemisphere indicator in a LonLatPointFormat formatting string now also works for longitude coordinates.

Bug fixLuciadRIA

RIA-388
Removed dependency on non-public ArrayCursor from RestStore in the COP sample.

Bug fixLuciadRIA

RIA-381
The 'selected' array in the selection event no longer contains all the selected object, but instead contains only the newly selected features as expected. Use the selectedObjects on luciad/view/Map to retrieve all the selected features.

Bug fixLuciadRIA

RIA-377
In the symbology encoding sample, clicking a layer in the layer control did not show the associated SE stylesheet.

Bug fixLuciadRIA

RIA-386
Disabling label decluttering by using "NON_DECLUTTERED" for the group name of a label did not work.

Bug fixLuciadRIA

RIA-212
It is now possible to define namespaces when creating a PropertyName element with the OGC FilterFactory. When the filter is configured on a WFS request, these namespaces will be encoded to XML.

Bug fixLuciadRIA

RIA-323
The OGC Filter Encoder can now generate an XML without <Filter> as root node.

Bug fixLuciadRIA

RIA-376
The calculateScaleForTilesetLevel did not return the correct value.

Bug fixLuciadRIA

RIA-371
Previously, lon lat polygons or polylines could return bounds that were smaller than expected.

Bug fixLuciadRIA

RIA-284
WFSFeatureStore query method now accepts a unique filter. If an array of filters is given as argument, only the first one is used and a deprecation warning is written on the console

Bug fixLuciadRIA

RIA-308
The OGC FilterFactory allows now to set the matchCase attribute on the relevant filters. When encoding and decoding filters to and from XML, the matchCase attribute is taken into account.

Bug fixLuciadRIA

The API documentation for LayerTreeNode incorrectly listed a "name" property. The correct property name is "label".

Bug fixLuciadRIA

Fixed a license checking error where correct licenses were wrongfully considered invalid.

Bug fixLuciadRIA

RIA-335
Configured grid line width to 1 instead of 0.5, to avoid disappearing grid lines on Chrome mobile.

Bug fixLuciadRIA

RIA-333
Corrected Bounds calculation of a shape that covers the poles. The focus point of a ShapeList now corresponds with the center of its bounds instead of the focus point of the first Shape in the ShapeList.

Bug fixLuciadRIA

RIA-322
If the container node of the map has no dimensions (ie. its width or its height measure zero pixels) when the map is constructed, the map will no longer create an invalid y-scale.

Bug fixLuciadRIA

RIA-321
Fixed bugs in selection synchronization in Vertical View sample between the map and the vertical view.

Bug fixLuciadRIA

RIA-320
Label priority in COP sample (Cities layer) is now correct.

Bug fixLuciadRIA

RIA-318
Corrected bounds calculation for projected (grid) references.

Bug fixLuciadRIA

RIA-310
Order of draw commands issued on the GeoCanvas is now always respected if the zIndex in the ShapeStyle object literal is the same for each command.

Bug fixLuciadRIA

RIA-307
The BingMapsTileSetModel now correctly handles the zoomMin and zoomMax optional constructor parameters.

Bug fixLuciadRIA

RIA-300
Downloaded icons (the url property in IconStyle) are no longer forced to be 16 by 16 pixels in size. The default size is now the size of the image.

Bug fixLuciadRIA

RIA-298
Plugged a memory leak which arose when requesting many images.

Bug fixLuciadRIA

RIA-296
Vector data is now drawn on the screen with sub-pixel floating point precision.

Bug fixLuciadRIA

RIA-179
A WFSFeatureStore now produces a meaningful error message when the WFS server responds with a valid service exception.

Bug fixLuciadRIA

RIA-294
When luciad/util/Promise.when is called with a single input variable, it now consistently returns a Promise. This simplifies the usage of this function because the type of the return object is now independent of the type of the input variable. For example, it allows users to transparently chain synchronous and asynchronous values. The behavior remains unchanged when .when() is called with more than a single variable (ie. it includes also the success or error handlers).

Bug fixLuciadRIA

RIA-272
The map now emits MapChange events during animated pans and zooms.

Bug fixLuciadRIA

RIA-276
Removed the use of undocumented property Map#xScale from sample code.

Bug fixLuciadRIA

RIA-292
Removed the use of undocumented FeatureChanged event from COP sample.

Bug fixLuciadRIA

RIA-270
Polygon stroke should now appear closed, also when the polygon crosses the date line.

Bug fixLuciadRIA

RIA-265
Polygons that cover the poles in cylindrical projections are now filled correctly.

Bug fixLuciadRIA

RIA-263
Only the single top layer of type BASE should be visualized on the Map. The behaviour did not reflect the documentation. This is now corrected.

Bug fixLuciadRIA

RIA-234
The LayerType of a layer can now be accessed through the Layers's read-only ".type" property.

Bug fixLuciadRIA

RIA-285
An OnPathLabelPosition object literal can now correctly include a 'positions' attribute. This property used to be ignored in favor of 'position' (without the 's').

Bug fixLuciadRIA

RIA-129
The BasicCreateController will not add a Feature to the model of the Layer if the user did not create a shape with a valid bounds.

Bug fixLuciadRIA

RIA-210
Improved ComplexPolygon and ShapeFactory documentation.

Bug fixLuciadRIA

RIA-213
When creating an OGC bounding box with FilterFactory.bbox, users can specify an optional geometryName parameter. Previously, when encoding such a bounding box to XML, LuciadRIA would add a default <ogc:PropertyName>Geometry</ogc:PropertyName> tag inside the <ogc:Bbox> tag. This is no longer the case, as this default behaviour is not always compatible with receivers of this XML.

Bug fixLuciadRIA

RIA-191
Corrected luciad/util/Promise documentation.

Bug fixLuciadRIA

RIA-219
The type property of Bounds instances is now ShapeType.BOUNDS instead of undefined.

Bug fixLuciadRIA

RIA-218
Painters no longer throw TypeErrors when issuing multiple drawLabel commands in paintLabel().

Bug fixLuciadRIA

RIA-217
First point of a polyline created with mouse in freehand mode now behaves normally when moving the entire polygon.

Bug fixLuciadRIA

RIA-216
CreateController#onChooseLayer now iterates over layers from top to bottom instead of bottom to top.

Bug fixLuciadRIA

RIA-215
ShapeFactory documentation no longer refers to API methods that do not exist.

Bug fixLuciadRIA

RIA-214
luciad/shape/Polygon#insertPoint() does no longer throw NotImplementedError.

Bug fixLuciadRIA

Various corrections were made to the LuciadRIA reference documentation, as well as small modifications to the documentation formatting and styling.

Bug fixLuciadRIA

RIA-125
A layer can now no longer be added to more than one map. An error will be thrown when an attempt is made to try to add the layer to a second map.

Bug fixLuciadRIA

Corrected equals method for Polar Stereographic Projection.

Bug fixLuciadRIA

RIA-118
Firefox 10.0.Xesr no longer hangs when displaying sparse tilesets. A sparse tileset is a tileset that does not define a tile for every possible tile coordinate (level, row, column).

Bug fixLuciadRIA

RIA-117
Removed anti-aliasing effects on tiles in case of Firefox browsers.

Bug fixLuciadRIA

RIA-112
The layer's visible property can now be configured when the layer is not yet added to map.

Bug fixLuciadRIA

RIA-105
Added luciad/shape/ShapeType. The .type property of a luciad/shape/Shape now is a value of the ShapeType enumeration. A related bug, caused by a mismatch between the type of a shape and the one which was expected by luciad/view/feature/BasicFeaturePainter, has been resolved.

Bug fixLuciadRIA

RIA-110
Holes of luciad/shape/ComplexPolygon are drawn regardless of the orientation of the Polygons it contains. Before this fix, in order for holes to be drawn correctly, the orientation (clockwise/counter-clockwise) of the outer ring (1st polygon) in the ComplexPolygon needed to be opposite the orientations of the inner rings.

Bug fixLuciadRIA

RIA-96
Geodetic bounds calculation of LonLat Polylines and LonLat Polygons now approximates geodetic interpolation of these shapes.

Bug fixLuciadRIA

Layer's EditableChanged event is now emitted correctly.

Bug fixLuciadRIA

RIA-103
GeoJSON codec now decodes LinearRings that are not closed (first point and last point are different) correctly; they are closed implicitly. Encoding of a LinearRing will always write correct GeoJSON: first and last point are equal.

Bug fixLuciadRIA

RIA-104
Can now create polygons with less than three points (which are in fact lines or points).

Bug fixLuciadRIA

Fixed faults in custom build configuration & scripts. Custom builds now also work for the COP demo.

Bug fixLuciadRIA

RIA-95
Misspelled property in ReferenceProvider: 'supportedReferenceIdentifierPatterns'.

Bug fixLuciadRIA

RIA-30
Low resolution tiles were shown where better ones were available.

Bug fixLuciadRIA

RIA-178
When adding a FeatureLayer to a map, prevent the FeatureLayer from querying the model when it is not necessary.

Bug fixLuciadRIA

RIA-175
Invoking map.selectedObjects does not throw a TypeError anymore when a RasterTileSetLayer is added to the map.

Bug fixAdvanced GIS Engine

RIA-1912
Fixed an issue where the intersection between a shape and a polygon would result in a ShapeList of 2 Points.

Bug fixAdvanced GIS Engine

RIA-1532
Fixed an issue where ConstructiveGeometryFactory.createSpherical would modify ellipsoid parameters of the reference that was passed in.

Bug fixDefense Standards

RIA-1753
Fixed bug introduced in version LuciadRIA 2016.1.15 that could mess up the rendering of labels.

Bug fixDefense Standards

RIA-776
Label decluttering has been improved for Military Symbols. Labels do not disappear any more when zooming in or out and they get close to a Military Symbol that does not contain a label.

Bug fixDefense Standards

RIA-1356
Military symbols icons where no longer painted correctly when selecting.

Bug fixDefense Standards

RIA-1339
MIL-STD-2525C is now using ISO 3166-1 instead of FIPS Pub 10 for country codes.

Bug fixDefense Standards

RIA-903
Short-Range Air Defense Engagement Zone label is fixed as SHORADEZ in MIL-STD-2525C.

Bug fixDefense Standards

RIA-899
Labels located at the left of Military Symbols display negative numbers properly now.

Bug fixDefense Standards

RIA-818
Made Label more consistent with GXY/Lsp labels.

Bug fixDefense Standards

One-Way Traffic, Alternating Traffic and Two-Way Traffic symbols are now visualized correctly in APP-6A/B and MIL-STD-2525B/C. The arrows at the top of these symbols were not visible.

Bug fixDefense Standards

RIA-759
Labels for military icon symbols that contain whitespace are not wrapped to the next line anymore.

Bug fixDefense Standards

RIA-753
The legs of the MIL-STD-2525B G*T*US----****X symbol sometimes briefly changed positions during zooming, causing a flickering effect. This is now resolved.

Bug fixDefense Standards

RIA-728
Ambush (G*O*VU----*****) APP-6A/B symbol is now properly visualized as an icon.

Bug fixDefense Standards

RIA-732
When visualizing the Radioactive Area (G*C*BWA---*****), Biologically Contaminated Area (G*C*BWC---*****) and Chemically Contaminated Area (G*C*BWH---*****) APP-6A/B symbols, the icons displayed in these symbols now adhere to the respective APP-6 specification.

Bug fixDefense Standards

RIA-623
The creation of the mine cluster military symbol is fixed.

Bug fixDefense Standards

RIA-601
It is now possible to edit the Friendly Occupied (Only if a unit must stop in the attack position) GUC-MOOTC------- symbol.

Upgrade considerationLuciadRIA

You can now configure how the 3D camera interacts with terrain and meshes while navigating. See MapNavigatorConstraints for details. You can choose what data the map navigation takes into account to push the camera upwards:
  • Terrain: if enabled, the camera will stay above the data in elevation layers. On by default.
  • Mesh: if enabled, the camera will stay above the data loaded in 3D tiles layers. Off by default.
  • None: the camera is not restricted, and can go under or inside the terrain and mesh data.
Note that compared to LuciadRIA 2018.x, the camera no longer interact with the mesh by default. If you want this behavior, you can easily re-enable it using map.mapNavigator.constraints.above = {mesh: true};. Also note that if you enable the above-mesh constraint, LuciadRIA now uses coarse-grained intersection tests, instead of fine-grained tests. This may result in different map navigation compared to LuciadRIA 2018.x;

Upgrade considerationLuciadRIA

LuciadRIA V2019 no longer supports WebGL maps (luciad.view.WebGLMap) on Internet Explorer 11. You can still use software-rendered maps (luciad.view.Map) on Internet Explorer 11.

Upgrade considerationLuciadRIA

The minMapScale, maxMapScale and restrictNavigationToBounds on Map have been deprecated. Instead, to constrain the map navigation, constraints should be configured on MapNavigator using MapNavigatorConstraints.

Upgrade considerationLuciadRIA

RIA-2434
The winding orientation of closed shapes styled with borders is automatically normalized to properly identify the inner and the outer side of the shape. The discretized line for closed shapes is normalized to clockwise orientation. If you use a complex stroke style with border styles this can effect the position of decoration patterns.

Upgrade considerationLuciadRIA

The AirspacePainter API has been removed. The functionality to draw the inner border and the outer border for closed shapes is now exposed through BorderStyle API. If you were using AirspacePainter you need to replace an AirspacePainter instance by a FeaturePainter instance that draws shapes with ShapeStyle.innerBorder and ShapeStyle.outerBorder styling objects. For more information please refer to the user guide and LuciadRIA API documentation.

Upgrade considerationLuciadRIA

RIA-2540
Changed the default value of TileSet3DLayer.offsetTerrain to false when constructing a TileSet3DLayer. If you were already using this option explicitly in your TileSet3DLayer instances, then no further action is required. If you were using the default constructor for TileSet3DLayer, and would like to have the terrain automatically lowered for OGC 3D Tiles datasets, you will now explicitly have to set this option to true.

Upgrade considerationLuciadRIA

RIA-1023, RIA-1518, RIA-1568, RIA-2113, RIA-2508
LuciadRIA now correctly respects the order of coordinates while decoding and encoding geometry. Most notably, this affects:
  • OGC services (WMS and WFS)
  • GML decoding
  • OGC BBox filters
Especially when used in combination with the EPSG:4326 reference. Coordinates in the EPSG:4326 reference are now (correctly) decoded and encoded in lat-lon order, instead of lon-lat order. If you already implemented a workaround for swapping coordinates, then you will need to either remove this workaround or use the newly introduced swapAxes flag in the constructor of GMLCodec, GeoJsonCodec, WFSFeatureStore, WMSImageModel or WMSTileSetModel to customize the coordinate swapping behavior.

Upgrade considerationLuciadRIA

The withCredentials constructor option for UrlStore and WFSFeatureStore has been deprecated. Use credentials instead.

Upgrade considerationLuciadRIA

LuciadRIA V2018 no longer supports the browsers Internet Explorer 9 and Internet Explorer 10.

Upgrade considerationLuciadRIA

RIA-971
Because the LuciadRIA sample code no longer depends on Dojo, the Dojo library has been completely removed from samples/lib. LuciadRIA remains compatible with Dojo. If you want to use Dojo, you can still download it yourself at dojotoolkit.org and use Dojo's components in your LuciadRIA project. For more details, see our developer guide.

Upgrade considerationLuciadRIA

The default LayerType is now STATIC. Before, the default was DYNAMIC for FeatureLayer and KMLLayer and unspecified for other layers. Since the layer type can affect painting performance in both a WebGLMap or a Map, you should review your layers and adapt where necessary. For more information, see API documentation of LayerType.

Upgrade considerationLuciadRIA

RIA-1951
The luciad/resources directory has been removed from LuciadRIA. The content of file luciad/resources/css/luciad.css can now be found in samples/common/balloon/luciad-balloon.css.

Upgrade considerationLuciadRIA

RIA-1944
In the sample code, all paths relative to a module have been replaced by paths relative to the baseURL, improving the packability of the sample code

Upgrade considerationLuciadRIA

The majority of LuciadRIA static resources are now loaded properly without setting window.LUCIADROOT_ variable. This variable still needs to be defined in two cases: if the Military Symbology component API is used, or if you do not use the License API to provide the license information. In the latter case, LuciadRIA will look for the license file in the default location: luciad/license/. For more details, please consult the LuciadRIA developer guide.

Upgrade considerationLuciadRIA

RIA-971
luciad/resources/luciad.css, which is used for styling balloons in LuciadRIA, has been moved to sample code. It can now be found as samples/common/balloon/luciad-balloon.css. See Map#showBalloon() for more information about styling balloons.

Upgrade considerationLuciadRIA

The initial value of MapNavigator#defaults.snapToScaleLevels is now false.

Upgrade considerationLuciadRIA

RIA-1469
Due to a change in Google policy, the use of a Google Maps API authentication is now mandatory. If you try to construct a GoogleImageModel without an authentication parameter, an Error will be thrown.

Upgrade considerationLuciadRIA

Units of measures and quantity kinds now must be registered using the luciad/uom/UnitsOfMeasure#register[ConversionUnit|Unit] and luciad/uom/QuantityKind#registerQuantityKind and APIs. Previously, to register , users could register new entries by modifying the luciad/resources/uom/UnitsOfMeasure.json and luciad/resources/uom/QuantityKind.json files. If you have modified these files, your code will no longer be compatible. Instead, you will now need to use the above mentioned API calls. Please refer to the API documentation for examples.

Upgrade considerationLuciadRIA

You can now optionally set the window.__LUCIAD_ROOT__ global variable to configure the root directory of the LuciadRIA deployment. This variable is introduced so LuciadRIA can correctly locate resources other than Javascript modules, such as images, JSON configuration files, license files, or web workers. Previously, LuciadRIA depended on AMD specific functionality, which made it hard to integrate LuciadRIA with contemporary packaging tools. This is now no longer the case. If you continue to use AMD module loading tools and your AMD package configuration uses "luciad" as the package name for the LuciadRIA module location, no changes need to be made. If you are using a name other than "luciad", you must set that window.__LUCIAD_ROOT__ configuration accordingly. The advantage of this change is that users now have more flexibility in what tools they can use to setup and deploy applications that depend on LuciadRIA. Users now no longer are restricted to using a fully AMD-compliant module loader.

Upgrade considerationLuciadRIA

RIA-629
The behaviour of setting a navigation constraint on the map with Map#restrictNavigationToBounds has changed. When a navigation restriction is set, it is no longer possible to see any content outside that area. The practical consequence is that the user can no longer zoom out to an extent that exceeds the width or height of the bounds.

Upgrade considerationLuciadRIA

Data is now being loaded lazily from the server: data will only be loaded from the server if the layer is visible. Visibility can be configured through the visibility property, or by means of scale ranges on the layer. Before this change, LuciadRIA would always load data from the server, also if a layer was invisible. If your application is designed to respond to WorkingSet events for FeatureLayers that are invisible when they are added to the Map, your application will no longer work as expected. You can typically fix this by ensuring that layers are visible when added to a map. If the layers contain a lot of data, you can use a LoadingStrategy to better have better control over when data is loaded and what data is loaded.

Upgrade considerationLuciadRIA

RIA-203
It is now possible to equip a FeatureLayer with a LoadingStrategy which determines how the layer loads data. Currently, two loading strategies are supported: the AllLoadingStrategy and SpatialLoadingStrategy. The AllLoadingStrategy always loads all data from the server. This was the default behavior before it was possible to configure a data loading strategy on the layer. The SpatialLoadingStrategy only loads data that is in the current map view. When you pan or zoom, the view extent changes and additional data may be loaded. Both the AllLoadingStrategy and SpatialLoadingStrategy can also be configured with a QueryProvider. A QueryProvider allows you to define what data needs to be loaded from the server for different Map Scale levels. To facilitate these data loading strategies, the query property on FeatureLayer has been deprecated in favor of the use of a QueryProvider.

Upgrade considerationLuciadRIA

RIA-607
The optional styles parameter of the constructor of a WMSImageModel and a WMSTileSetModel is now an array. This is now consistent with the type of the layers-parameter. The old type of the styles parameter was a comma-delimited string and is now deprecated.

Upgrade considerationLuciadRIA

RIA-545
The beginMarker and the endMarker styling properties moved from luciad.view.style.ShapeStyle to luciad.view.style.LineStyle. A deprecation message will be logged to the console for shapeStyle objects that have either of these two properties.

Upgrade considerationLuciadRIA

RIA-423
IconStyle now supports both relative and absolute width/height and anchorX/anchorY parameters. These parameters have been changed to a String that contains a css-style value and a unit of measure. Examples of this are: "50%", or "16px". Relative values are given in percentages, absolute values are given in pixels. If you are now configuring the width and height with a simple number-value, please change it to a string-value of that number with the postfix "px". Because relative sizes can now be defined with width/height, the scaleX/scaleY properties have become deprecated. A scale of (for instance) "2", is equal to a width of "200%".

Upgrade considerationLuciadRIA

RIA-306
For naming consistency with the levelCount property, the levels optional configuration parameter of the RasterTileSetModel constructor is now deprecated in favor of the optional parameter levelCount. If you are using the 'levels' optional parameter, please rename it to 'levelCount'.

Upgrade considerationLuciadRIA

Methods on the luciad/ogc/filter/FilterFactory no longer accept strings as arguments where OGC expressions are expected. You must instead explicitly pass a literal or property name to factory methods. Please modify your code from <string> to FilterFactory.literal(<string>) or FilterFactory.property(<string>) respectively. The identifiers() factory method now allows the definition of both GmlObjectId and FeatureId identifiers. Previously, only FeatureIds could be created. To remain compatible, please modify existing calls to the identifiers() method from FilterFactory.identifiers(<list of FeatureIDs>) to FilterFactory.identifiers([], [<list of FeatureIDs>]);

Upgrade considerationLuciadRIA

The signature of the draw methods on the LabelCanvas (drawLabel, drawLabelOnPath, drawLabelInPath) has been changed. The text parameter value can now contain HTML, which will be rendered as such. The textStyle parameter has been removed in favor of CSS styling, which can be inlined in the text parameter or can be configured through CSS classes, which you must define in your application's CSS stylesheet.

Upgrade considerationLuciadRIA

GeoReference has been renamed to CoordinateReference. GeoReferenced has been renamed to CoordinateReferenced. This modification was done to accommodate the visualization on non-georeferenced data. CoordinateReference and CoordinateReferenced are applicable to both geographical references as non-geographical references.

Upgrade considerationLuciadRIA

The mapScale property of a Map now returns an Array of two Numbers, instead of a single Number value. Those numbers represent the scale along the X and Y axes.

Upgrade considerationLuciadRIA

RIA-171
The Store, Codec and FeatureModel API has been adjusted to provide a clean distinction between the client-server communication and the format specific logic (= the conversion between server-side data format and the LuciadRIA Features format). This makes it easy to extend existing Stores with support for additional data formats. Previously, the Store would convert the response of the server into Javascript objects, and the FeatureModel would convert those objects into LuciadRIA features by using a Codec. This meant that both the Store and the Codec had knowledge of the format of the server response. If you wanted to support an additional format, you needed to adjust both the Codec and the Store. The new approach is to let the Store convert the server response into LuciadRIA features and pass them directly to the FeatureModel. Some of the Store implementations available in the API use a Codec to convert the server response into Features. This allows to support additional formats by providing a new Codec to the Store, without changing the Store. The benefit is that the Codec should only contain the logic related to the format, while all the client-server communication logic of the Store can be reused. Consult the documentation of the FeatureModel, Store and Codec classes for more information. This affects the following classes:
  • FeatureModel: the FeatureModel no longer uses a Codec. If you still pass one in the constructor, a warning will be logged. The conversion to Features should now happen in the Store.
  • Store: the Store API has been adjusted to work with Features. The event that is fired should now contain a Feature and no longer a Javascript object, and the query method should return a Cursor of Features. The getIdentity method has been removed as the Feature API allows to retrieve the ID. All Store implementations in the API have been adjusted (see below).
  • Codec: the Codec no longer encodes/decodes a single object into a Feature but now parses the whole server response into a Cursor of Features. This avoids that the format logic is contained in both the Store and the Codec. The GeoJsonCodec class has been adjusted to match this new API.
  • Cursor: the Cursor API has been completely changed. The previous methods and fields (forEach() and count) have been replaced by a hasNext and next() method. This allows to perform lazy-decoding of the server response and is better suited to handle large. The ArrayCursor class has been adjusted to match this new API.
The following Store implementations have been changed:
  • MemoryStore: the idPath option is no longer supported in the constructor. A warning will be logged when you still use this option. No Codec can be set on this Store as it stores the Feature instances in memory without converting them to another format.
  • UrlStore: the idPath option is no longer supported in the constructor. A warning will be logged when you still use this option. The decode method has been replaced by the possibility to specify a Codec in the constructor. It is up to the Codec to decode the server response to LuciadRIA features.
  • RestStore: this class has been removed from the API, and has been added to the samples. There is no standard behavior for REST servers for adding/updating elements. As such, it is very hard to provide an implementation which works for all servers. We opted to make our implementation available as sample code. This allows you to easily modify the behavior of the Store to match the one of the server. The Store has also been adjusted to the new API: the idPath option is no longer supported in the constructor, and the decode/encode methods have been replaced by a Codec.
  • WFSFeatureStore: this Store has been added to the API and replaces the WFSFeatureModel. It allows to replace the Codec in order to support different output formats. In order to create a WFS model you can use a standard FeatureModel in combination with the WFSFeatureStore. Note that some of the query options which were available on the WFSFeatureModel have been moved to the constructor of the WFSFeatureStore. Warnings will be logged when you pass the old options to the query method. The support for configuring multiple type names in one WFSFeatureModel has also been dropped. Each type name now requires its own model and own WFSFeatureStore. Consult the documentation of the constructor and query method of the WFSFeatureStore for a detailed list of what is supported.

Upgrade considerationLuciadRIA

All CSS class names used by LuciadRIA have now been prefixed with 'lcd' to avoid clashes with application specific CSS class names. This should only affect balloon styling.

Upgrade considerationLuciadRIA

The luciad.view.style.GeoCanvas#drawShape method now expects a luciad.view.style.FillStyle object literal to describe the fill and no longer a fill color as String. stroke and strokeWidth have been replaced by a luciad.view.style.LineStyle object literal in a similar fashion. The old options are still supported but is deprecated. A warning will be logged when passing the fill or stroke as a String, or when using the strokeWidth property.

Upgrade considerationLuciadRIA

Scale properties throughout the LuciadRIA API now express map scale. Map scale expresses the ratio of the on screen distance to the real world distance. E.g. if 1cm on the screen displays 30.000cm, the map scale is 1/30000. Note that map scale is only an approximation, because web browsers do not provide unambiguous means to determine how many pixels occupy 1cm of screen space. This is relevant when configuring for example the minScale and maxScale properties of a 'luciad/view/feature/FeatureLayer' or when invoking the setScale or zoomTo methods on a 'luciad/view/MapNavigator'.

Upgrade considerationLuciadRIA

Styling properties "stroke-width", "text-anchor" and "alignment-baseline" have been renamed to "strokeWidth", "textAnchor" and "alignmentBase" respectively. The old keywords are deprecated and will be removed in the future.

Upgrade considerationLuciadRIA

The paintLabel method is now passed a labelCanvas parameter instead of a GeoCanvas parameter to support label decluttering. Labeling in painters may break because of the different API and semantics that are realized by the LabelCanvas.

Upgrade considerationLuciadRIA

The order of children of a luciad/view/LayerTreeNode has been reversed to be compatible with other Luciad products. Apart from layer bookkeeping functionality, applications should not be affected by this modification. Additionally, the position keywords to add layers to the layer tree have been renamed from "first", "last", "before" and "after" have been renamed to "top", "bottom", "above" and "below" respectively. The old keywords still work but are deprecated; they will be removed in a future release.

Upgrade considerationDefense Standards

You no longer need LuciadLightspeed to build and deploy the military symbology service. Instead, the military symbology service is now part of the LuciadFusion Defense Symbology Compononent. Deployment is much simpler; the symbology service is started automatically when you start the LuciadFusion Platform.

Upgrade considerationDefense Standards

Several arrow symbols in the military symbologies were painted in the wrong direction. The direction of those symbols is now corrected by default.
Disabling the fix
If you want to disable this fix and keep the old behavior, you can set the MilitarySymbologyPainter.PAINT_LEGACY property to true.
Affected symbols
APP-6A / APP-6B
Name Code(SIDC) Hierarchy Code
Counterattack (CATK) G*T*GK----***** 2.X.1.1.7
Counterattack by Fire GFC*MOLAF-***** 2.X.1.1.7.1
Axis of Advance - Friendly Aviation GFC*MOLAF-***** 2.X.2.1.5.2.1.1
Axis of Advance - Friendly Airborne GFC*MOLAA-***** 2.X.2.1.5.2.1.2
Axis of Advance - Friendly Attack Helicopter GFC*MOLAH-***** 2.X.2.1.5.2.1.3
Axis of Advance - Friendly Ground Axis Of Supporting Attack GFC*MOLAS-***** 2.X.2.1.5.2.1.4
Axis of Advance - Friendly Ground Axis Of Main Attack GFC*MOLAM-***** 2.X.2.1.5.2.1.5
Axis of Advance - Enemy Confirmed GHC*MOLAE-***** 2.X.2.1.5.2.1.7
Axis of Advance - Enemy Templated GHC*MOLAT-***** 2.X.2.1.5.2.1.8
Direction Of Attack - Friendly Direction Of Supporting Attack GFC*MOLDS-***** 2.X.2.1.5.2.2.7
Direction Of Attack - Friendly Direction Of Main Attack GFC*MOLDM-***** 2.X.2.1.5.2.2.8
APP-6C
Name Code(SIDC)
Counterattack (CATK) 10002500003214000000
Counterattack by Fire 10002500003215000000
Airborne/Aviation Axis of Advance Aviation 10002500001513000000
Main Attack/Decisive 10002500001514000000
Supporting Attack/Shaping 10002500001515000000
Supporting Attack/Shaping - Feint 10002500001515010000
Advance to Contact 10002500003201000000
Mission Tasks/Verbs - Attack 10002500003204000000
MIL-STD-2525B / MIL-STD-2525C
Name Code(SIDC) Hierarchy Code
Counterattack (CATK) G*T*K-----****X 2.X.1.7
Counterattack by Fire G*T*KF----****X 2.X.1.7.1
Axis of Advance - Aviation G*G*OLAV------X 2.X.2.5.2.1.1
Axis of Advance - Airborne G*G*OLAA------X 2.X.2.5.2.1.2
Axis of Advance - Attack, Rotary Wing G*G*OLAR------X 2.X.2.5.2.1.3
Axis of Advance - Main Attack G*G*OLAGM-----X 2.X.2.5.2.1.4.1
Axis of Advance - Supporting Attack G*G*OLAGS-----X 2.X.2.5.2.1.4.2
Axis of Advance For Feint G*G*PA--------X 2.X.2.3.2