This page shows the release notes of older versions up until the point that the new version was released. For a full list of release notes of an old version, consult the documentation of that version.
For example if you want to see what is fixed in each 2019.1.x patch release, consult the release notes in the documentation of the 2019.1 release.
2023.1
2023.1.16
ImprovementLuciadRIA
RIA-4742
Bug fixLuciadRIA
RIA-4791
Geodesy.shortestDistanceToLine
often returned incorrect values when using a spherical or
ellipsoidal Geodesy
instance.
Bug fixLuciadRIA
RIA-4879
FeatureLayer
: Fixed an issue where vertical polygons would not always be filled correctly.
Bug fixLuciadRIA
RIA-4885
2023.1.12
Bug fixLuciadRIA
RIA-4781
Bug fixLuciadRIA
RIA-4794
2023.1.11
New featureLuciadRIA
RIA-4467
Bug fixLuciadRIA
RIA-4790
WFSFeatureStore.createFromURL
method now accepts an options object with
allowedVersions
to specify the WFS version for GetCapabilities requests.
This is crucial for WFS servers that do not support version 2.0.0 by default.
Bug fixLuciadRIA
RIA-4779
ExtrudedShape
constructor.
Previously, it could incorrectly throw an error during the validation of the input reference and the base shape's reference.
Now, the ExtrudedShape
constructor accurately verifies that the two references represent
the same spatial reference.
Bug fixLuciadRIA
RIA-4771
Bug fixLuciadRIA
RIA-4776
Bug fixLuciadRIA
RIA-4774
Bug fixLuciadRIA
RIA-4762
2023.1.10
Bug fixLuciadRIA
RIA-4770
Bug fixLuciadRIA
RIA-4760
WFSFeatureStore
based on WFS capabilities defined in this manner.
Bug fixLuciadRIA
RIA-4758
TRANSPARENT
request parameter in WMS GetMap requests is now formatted as
upper case TRUE
and FALSE
. Before the fix these values were
formatted in lower case, which violates the WMS specification.
Bug fixLuciadRIA
RIA-4679
FeatureLayer
: Fixed an issue where transparent lines would not have a consistent color in
sharp corners or where they overlap themselves.
2023.1.08
ImprovementLuciadRIA
RIA-4714
Bug fixLuciadRIA
RIA-4734
Bug fixLuciadRIA
RIA-4731
EditController
on WebGLMap
.
If you edit a feature that is not yet present in the layer's workingSet, and instantly remove it again in EditController.onDeactivate
,
the feature would remain on the map.
Bug fixLuciadRIA
RIA-4724
GMLCodec
where GML data, with a geodetic reference containing height information (e.g. EPSG:4979),
was incorrectly decoded as 2D instead of 3D points.
Bug fixLuciadRIA
RIA-4722
2023.1.07
ImprovementLuciadRIA
RIA-4713
OGC3DTilesModel
from the constructor options.
Bug fixLuciadRIA
RIA-4710
Bug fixLuciadRIA
RIA-4711
Bug fixLuciadRIA
RIA-4698
Bug fixLuciadRIA
RIA-4708
Bug fixLuciadRIA
RIA-4704
2023.1.06
Bug fixLuciadRIA
RIA-4692
ADAPTIVE_WORLD_SIZE
style is not applied correctly when the map is resized.
Bug fixLuciadRIA
RIA-4702
metallicFactor
and roughnessFactor
in the material definition of MeshStyle
being incorrectly taken
in account when using physically based rendering.
Bug fixLuciadRIA
RIA-4685
Bug fixLuciadRIA
RIA-4690
ReferenceProvider
, it didn't always return a
reference with correct axes.
Bug fixLuciadRIA
RIA-4686
minimum
and maximum
fields of the properties
of OGC3DTilesModelDescriptor
.
Bug fixLuciadRIA
RIA-4320
GeoJsonCodec
now removes this duplicate point when decoding the GeoJSON polygon to
a LuciadRIA geometry. Before this fix the start and the end point would be present twice in a LuciadRIA geometry,
which could yield unexpected behavior when editing a polygon.
2023.1.05
ImprovementLuciadRIA
RIA-4669
Bug fixLuciadRIA
RIA-4670
Bug fixLuciadRIA
RIA-4678
2023.1.04
Bug fixLuciadRIA
RIA-4668
Bounds
shape with a CreateController
.
Bug fixLuciadRIA
RIA-4661
Bug fixLuciadRIA
RIA-4655
Bug fixLuciadRIA
RIA-4653
ReferenceProvider
is now more flexible in
accepting parameter names for the projection center.
Bug fixLuciadRIA
RIA-4647
GeoJsonCodec
now removes this duplicate point when decoding the GeoJSON polygon to
a LuciadRIA geometry. Before this fix the start and the end point would be present twice in a LuciadRIA geometry,
which could yield unexpected behavior when editing a polygon.
Bug fixLuciadRIA
RIA-4654
map.layerTree.whenReady()
promise might be thrown when the map is created in a tab that remains in the background
for 5 minutes.
2023.1.03
ImprovementLuciadRIA
RIA-4361
ImprovementLuciadRIA
RIA-4627
Bug fixLuciadRIA
RIA-4642
WMSCapabilitiesLayer.getBounds()
and
WMTSCapabilitiesLayer.getBounds()
can return null. This was not reflected in the
TypeScript API and is now corrected.
Bug fixLuciadRIA
RIA-4641
__LUCIAD_ROOT__/license
when
the global variable __LUCIAD_ROOT__
wasn't defined.
Bug fixLuciadRIA
RIA-4626
WMSTileSetModel
or WMSImageModel
using createFromURL()
or createFromCapabilities()
would create a
model with a CRS:84 model even if the server's capabilities did not support that coordinate reference. The
factory methods will now attempt to create a model with a supported coordinate reference.
Bug fixLuciadRIA
RIA-4637
FeatureLayer.workingSet
).
Bug fixLuciadRIA
RIA-4543
svg
tag,
caused a crash.
Bug fixLuciadRIA
RIA-4544
Bug fixLuciadRIA
RIA-4643
Map
where you
could not move the shape.
Bug fixLuciadRIA
RIA-4636
- you pan away from the selected feature over a long distance
- a
FeatureLayer.transformer
is reset and the original features put into the model had no IDs - a
FeatureLayer.filter
is reset and the original features put into the model had no IDs
2023.1.02
ImprovementDefense Symbology
RIA-4519
MilitarySymbologyPainter
to get the actual bounds of a military symbol,
that can then be used for fitting on that symbol.
Note that regular fitting on the shape of a military symbol will not always give you the desired result.
The reason for this is that the symbol shape mostly only contains the anchor points for the symbol,
which are then used to calculate a very different final shape to be drawn.
Bug fixLuciadRIA
RIA-4463
DOUBLE_LEFT_HALF
and DOUBLE_RIGHT_HALF
were twice
the intended size or were omitted partially instead of fully when there is a lack of space.
Bug fixLuciadRIA
RIA-4585
Fixed a bug where draping on meshes could produce blurry results if the meshes was not set as part of terrain.
Bug fixLuciadRIA
RIA-4606
Topology
that in certain situations could influence outputs
of the constructive geometry operations.
Bug fixLuciadRIA
RIA-4601
WebGLMap
would throw errors when its border is larger than
its encompassing html node.
Bug fixLuciadRIA
RIA-4598
GeoBuffer.contains2DPoint
could throw an error when the buffer's base shape
was a Polyline
and its end cap was defined set to EndCapStyle.CAP_BUTT
.
Bug fixLuciadRIA
RIA-4609
Bug fixLuciadRIA
RIA-3852
CircularArc
and CircularArcBy3Points
are now more accurate. Before, the bounds were too small in some cases.
Bug fixDefense Symbology
RIA-4518
MilitarySymbologyPainter
#createSymbolImage
)
did no longer work as expected (no preview or wrongly scaled/bounded preview).
Bug fixDefense Symbology
RIA-4554
Upgrade considerationLuciadRIA
RIA-4610
boost
library has been updated to version 1.83.0
.
2023.1.01
ImprovementLuciadRIA
RIA-4587
Bug fixLuciadRIA
RIA-4501
Bug fixLuciadRIA
RIA-4551
LabelStyle.priority
is now deterministic,
which improves label stability when updating positions of individual features. Before the fix, small position
changes of a feature resulted in showing different labels in the vicinity of the modified feature.
Bug fixLuciadRIA
RIA-4576
Bug fixLuciadRIA
RIA-4574
Bug fixLuciadRIA
RIA-4588
OGC3DTilesModel
.
It did not properly implement AttributedTileSet
.
2023.1
New featureLuciadRIA
HSPC Pack files are now supported on HSPCTilesModel
and
TileSet3DLayer
.
New featureLuciadRIA
3D Cartesian references, for example the "LUCIAD:XYZ" reference or those created with
ReferenceProvider.createCartesianReference
,
can now be used as the world reference on a WebGLMap
. This allows you to visualize
non-georeferenced data on a 3D WebGLMap
.
![A non-georeferenced point cloud visualized in its local, Cartesian 3D reference](media/2023.1/point-cloud-cartesian3d.png)
The use of a WebGLMap
with a 3D Cartesian reference is demonstrated in the 3D icon sample,
which now displays a separate panel when you select an icon. The panel uses a 3D Cartesian world reference.
A WebGLMap
with a 3D Cartesian reference has certain limitations and conventions to take into account.
For more information, please see the article on Cartesian views.
New featureLuciadRIA
@luciad/ria-sample-common
package (which we don't recommend since we
don't guarantee backwards-compatibility for our samples), you will need to change your imports.
New featureLuciadRIA
New featureLuciadRIA
![A map with date line wrapping enabled](media/2023.1/wraparoundworld.webp)
New featureLuciadRIA
TileSet3DLayer.selectedOcclusionStyle
and TileSet3DLayer.selectedOutlineStyle
.
For an example of how to use these new styles, see
Using occlusion and outline styles for selected features.
New featureLuciadRIA
map.effects.fog
and FogEffect
for more details.
See also the article Configuring WebGL Map effects.
ImprovementLuciadRIA
You can now set the property facetCulling
on a Icon3DStyle
.
The facetCulling
property defines the polygons that are not visible to the camera and will be discarded.
ImprovementLuciadRIA
TileSetAttribution.getLayerAttributions
and the corresponding
"LayerAttributionsChanged"
event to match attribution strings and logos to their respective
layers.
ImprovementLuciadRIA
RIA-4555
The precision of WKT references that use an ellipsoidal version of the Lambert azimuthal equal area projection has been improved. This affects the following EPSG codes:
- 3035
- 3571 to 3576
- 5633, 5635, 5636, 5638
- 6931, 6932
- 9039
- 9947
ImprovementLuciadRIA
BASED_ON_DATA
as a new FacetCullingType
when you are styling mesh data
for a TileSet3DLayer
. You can use it if you
are unsure about the face culling type or if you are using a 3D Tiles set that uses glTF version 2.0, or if you are mixing
double-sided and non-double-sided material.
ImprovementLuciadRIA
RIA-4487
LayerTreeNode
now emits events named "VisibilityInTreeChanged". The callback on this event
hook gets called when the visibleInTree
of the layer tree node changes.
This allows you to react on a layer becoming visible or invisible on a LuciadRIA map.
ImprovementLuciadRIA
RIA-4477
GeoJsonCodec
now fully supports features with the null geometry, both when decoding and encoding.
ImprovementLuciadRIA
ImprovementLuciadRIA
RIA-4379
ImprovementLuciadRIA
WebLGMap
will now show a watermark.
ImprovementLuciadRIA
RIA-1546
KMLPainter
API is now exposed, so that you can extend it to implement a custom styling of
KMLPlacemarkFeature
objects. Also, KMLPainter
exposes methods
to obtain LuciadRIA style objects that correspond to
the KML style embedded in placemark features. For more information, refer to KMLPainter
.
ImprovementLuciadRIA
RIA-3293
FeatureId
type alias.
ImprovementLuciadRIA
RasterStyle
: properties to change the contrast and brightness of a
RasterLayer
have been added. And it is now also possible to configure a modulation color.
ImprovementPanoramic
RIA-4362
WFSFeatureStore.bounds
exposes now data bounds from WFS capabilities.
Bug fixLuciadRIA
RIA-4573
MapNavigator.pan
. It didn't pan to the right location when passing
in a world or model point with a height above ellipsoid.
Bug fixLuciadRIA
RIA-3969
ShapeStyle.zOrder
was not applied correctly when used in combination with
ShapeStyle.occlusionMode
.
Bug fixLuciadRIA
Bug fixLuciadRIA
RIA-4530
ClusterShapeProvider
. Before, in such a situation,
3D points were always reduced to 2D points. Please note that the default cluster shape provider
still returns anchor points with the Z-coordinate equals to 0.
Bug fixLuciadRIA
RIA-4522, RIA-4461
DOUBLE_LEFT_HALF
and
DOUBLE_RIGHT_HALF
were twice the intended size or were omitted partially instead of fully
when there is a lack of space.
Upgrade considerationLuciadRIA
myVRArchive
library to support Hexagon Smart Point Cloud (HSPC)
Pack files. This new dependency requires no code changes.
Upgrade considerationLuciadRIA
WebGLMap.globeColor
has new behaviour.
The globeColor
can now be set to null
to avoid painting a globe
entirely.
This also disables 2D vector and raster painting. Only data that does not need to be draped will be rendered on
the map.
On top of that, you can now set the alpha value of your globeColor
to 0, which will render
a
fully transparent globe in the absence of raster layers.
The fully transparent globe still allows you to drape 2D shapes and images on top of it.
Setting a globeColor
with an alpha values between 0 (exclusive) and 1 (inclusive) will
render
the globe with a fully opaque color.
Upgrade considerationLuciadRIA
RIA-3811
Icon3DStyle
: The axis system for rendering 3D icons has been changed. The Y-axis now points
to the north, the X-axis to the east and the Z-axis upwards.
When loading glTF files they are now also automatically converted from their Y-up axis system to the LuciadRIA axis system, as a result you will in most cases no longer need to apply rotations to have your model oriented correctly.
For compatibility reasons Icon3DStyle.legacyAxis
was added. Setting this property to true
restores the behavior as it was. In the LuciadRIA 2023.1 release this property defaults to true, so you do not
need to update existing code. From LuciadRIA 2024.0 onwards the default will be set to false, it is recommended
to already adapt your code for the changes in the axis system.
Upgrade considerationLuciadRIA
libtiff
version 4.5.1
.
Upgrade considerationLuciadRIA
Icon3DStyle
now
operates clockwise instead of counter-clockwise.
These changes were made to improve consistency with other functionality where the Y-axis of the cartesian reference
serves as the north direction (e.g. LookAt
, IconStyle.heading
, etc.).
Upgrade considerationLuciadRIA
RIA-4477
GeoJsonCodec.decodeGeometry
and GeoJsonCodec.decodeGeometryObject
can now return null
. This is a consequence of the enhancement to support features
with the null geometry by GeoJsonCodec
.
Upgrade considerationLuciadRIA
Upgrade considerationLuciadRIA
boost
library has been updated to version 1.83.0.
Upgrade considerationLuciadRIA
RIA-1692
The versions
property in
WFSFeatureStoreConstructorOptions
,
WFSCapabilitiesFromUrlOptions
, and
WFSFeatureStoreCreateOptions
are not anymore of the "string" type but
WFSVersion
enumerations.
The allowedVersions
property passed to
WFSCapabilities.fromURL
is not anymore of the "string" but
WFSVersion
enumerations.
The WMS version
property in
WMSImageModelConstructorOptions
, and
WMSTileSetModelConstructorOptions
is not anymore of the "string" type.
Versions are now represented as WMSVersion
enumerations.
The allowedVersions
property passed to
WMSCapabilities.fromURL
,
WMTSCapabilities.fromURL
is not anymore of the "string" but
WMSVersion
enumerations.
WFSFeatureStore
from capabilities with a specific WFS version:
createFromCapabilities(capabilities, featureTypeName, { versions: ["2.0.0"] });
should be now:
createFromCapabilities(capabilities, featureTypeName, { versions: [WFSVersion.V200] });
Upgrade considerationLuciadRIA
RIA-4433
FeatureModel.get
. The return value can also be
undefined
, which is the case when no feature with the given id exists in the model.
2023.0
2023.0.11
Bug fixLuciadRIA
RIA-4566
MapNavigator.pan
. Panning to a location that's far away, would not
move the camera all the way to its target location.
Bug fixLuciadRIA
RIA-4567
Map.onCreateContextMenu
. It was no longer called when there are no
features under the mouse.
2023.0.10
ImprovementLuciadRIA
RIA-4483
Bug fixLuciadRIA
RIA-4537
WFSFeatureStore
now passes to the WFS service the exact reference identifier,
as reported in the OtherSRS list of WFS capabilities. Before the fix, the reference identifier could be expressed
in a different format, that might be rejected by the WFS service when requesting features.
Bug fixLuciadRIA
RIA-4538
Icon3DStyle
: a 3D icon would not be visible on a 2D map when Icon3DStyle.transparency
was set to true.
Bug fixLuciadRIA
RIA-4532
createFromCapabilities
or
createFromURL
with a reference
configured in
WMSTileSetModelCreateOptions
. It was possible that a model was created with a reference that
was equivalent to the requested reference but had a different axis ordering. For example, if you requested a model
with an EPSG:4326 reference, you could get a model with a CRS:84 reference. This posed a problem if the WMS server
does not support CRS:84.
Bug fixLuciadRIA
RIA-4527
Bug fixLuciadRIA
RIA-4499
Bug fixLuciadRIA
RIA-4524
Bug fixLuciadRIA
RIA-4488
TileSet3DLayer
was still applied when its visible
property was true, but the layer group containing the layer was invisible.
Bug fixLuciadRIA
RIA-4504
WMSCapabilitiesLayer.attribution
was always null
or
undefined
. In accordance with the WMS specifications, all elements in
WMSCapabilitiesLayerAttribution
are optional and can also be null.
Bug fixLuciadRIA
RIA-4506
Bug fixLuciadRIA
RIA-4497
WFSFeatureStore
could decode features in incorrect reference.
This situation happened when the store's reference, selected by the store from the WFS capabilities,
mismatched the WFS service's default reference.
The store will throw an exception if no reference is supported in LuciadRIA from the WFS capabilities.
Bug fixLuciadRIA
RIA-4489
Bug fixLuciadRIA
RIA-4484
Map.getViewTransformation
is called
on a Map
that is already destroyed.
Bug fixLuciadRIA
RIA-4482
Bug fixLuciadRIA
RIA-4481
Bug fixLuciadRIA
RIA-4476
Upgrade considerationLuciadRIA
RIA-4457
2023.0.06
Bug fixLuciadRIA
RIA-4462
Bug fixLuciadRIA
RIA-4460
Bug fixLuciadRIA
RIA-4459
HSPCTilesModel
would log a warning when the model had a reference equal
to
EPSG:4978, but without identifier.
Bug fixLuciadRIA
RIA-4453
2023.0.05
ImprovementLuciadRIA
RIA-4450
wellKnownName
of a mark
graphic.
Bug fixLuciadRIA
RIA-4449
Bug fixLuciadRIA
RIA-4431
Bug fixLuciadRIA
RIA-4430
Bug fixLuciadRIA
RIA-4427
Bug fixLuciadRIA
RIA-4426
Bug fixLuciadRIA
RIA-4424
Bug fixLuciadRIA
RIA-4260
Bug fixDefense Symbology
RIA-4454
2023.0.04
Bug fixLuciadRIA
RIA-4442
TileSet3DLayer
. It occurred
when dragging a handle close to the edge of the viewport.
2023.0.03
ImprovementLuciadRIA
Icon3DStyle
: the initial load time of glTF models has been improved, specifically for models
that have parts that reference the same texture.
ImprovementLuciadRIA
RIA-3846
IconStyle.modulationColor
is now also applicable when drawing icons on a non-hardware accelerated map.
Bug fixLuciadRIA
RIA-4422
Bug fixLuciadRIA
RIA-4434
KMLLayer
draws image icons, coming from KMZ image resources, scaled to the height of 32 pixels preserving the width to height ratio.
Before the fix, the resource images where resized to 32x32 pixel image, making them non-uniformly scaled.
Bug fixLuciadRIA
RIA-4435
ParameterizedPointPainter
: an error was thrown when a
FeatureLayer
with a ParameterizedPointPainter
was removed from the map and later added again.
Bug fixDefense Symbology
RIA-4437
GeoBuffer
shape.
Bug fixDefense Symbology
RIA-4429
2023.0.02
ImprovementLuciadRIA
RIA-4405
FeatureLayer
: the initial load time when multiple FeatureLayer
are
added to a map has been improved.
Bug fixLuciadRIA
RIA-4419
Bug fixLuciadRIA
RIA-1755
WFSFeatureStore
works properly when the data coordinate reference from
WFS capabilities is represented as a well-known text (WKT).
Before the fix, in such a situation WFSFeatureStore
could not be instantiated.
2023.0.01
ImprovementLuciadRIA
RIA-4399
ImprovementLuciadRIA
RIA-3761
ReferenceProvider.parseWellKnownText
now also supports parsing topocentric references.
ImprovementLuciadRIA
RIA-4367
KMLLayer
. Before, bundled resources in a KMZ file were not handled.
ImprovementLuciadRIA
RIA-4396
ReferenceProvider.createTopocentricReference
now allows you to specify an identifier for the created topocentric reference.
This can either be done by passing the identifier directly (see CreateTopocentricReferenceOptions.identifier
), or by
specifying an authority name and code using which the identifier is constructed (see CreateTopocentricReferenceOptions.authorityName
and CreateTopocentricReferenceOptions.authorityCode
).
ImprovementLuciadRIA
ReferenceProvider
now additionally supported WKT strings/EPSG codes with the following datums:
- Korean Datum 1985
- Macao 1920
ImprovementLuciadRIA
RIA-3820
MeshUrlIcon3DStyle
now extends the HttpRequestOptions
interface.
This makes it possible to provide authentication headers.
Bug fixLuciadRIA
RIA-4414
Bug fixLuciadRIA
RIA-4170
Geodesy.area
and Geodesy.shortestDistanceToLine
implementations didn't return correct
results when passing input defined in a reference that is not geodetic. The cartesian Geodesy.area
implementation now also throws a programming
error when passing input defined in a geocentric reference: the area calculation is 2D, while a geocentric reference defines
3D points. This would result in incorrect
results.
Bug fixLuciadRIA
RIA-4398
GeodesyFactory
didn't allow creating a cartesian, spherical nor ellipsoid geodesy for topocentric references.
Bug fixLuciadRIA
RIA-4396
WebGLMap
. Among others, it
was not possible to fit on a map using bounds defined in a topocentric reference.
Bug fixLuciadRIA
RIA-4397
Bug fixLuciadRIA
RIA-4378
Bug fixLuciadRIA
RIA-4249
Bug fixLuciadRIA
RIA-4365
LoadingStrategy
with refresh
settings will now clear its internal timer resources
when a FeatureLayer
configured with that loading strategy is removed from the map.
Bug fixLuciadRIA
RIA-4041
Bug fixLuciadRIA
RIA-4351
LayerTreeNode.whenReady
promise was resolved before the model updates were handled.
Upgrade considerationLuciadRIA
RIA-4332, RIA-4359
Icon3DStyle
: the pbrMetallicRoughness.baseColorFactor defined in glTF files was not applied
correctly, resulting in a wrong color to be visualized. This fix also applies to OGC 3D Tiles visualized in a
TileSet3DLayer
.
This fix might result in a different visualization of your model when the glTF file does not define a color texture
or color vertex attribute. To get the correct visualization in this case you need to enable PBR via the
PBRSettings
property on Icon3DStyle
or on MeshStyle
.
2023.0
New featureLuciadRIA
RIA-4152
New featureLuciadRIA
RIA-3020, RIA-3705
WMTS support is extended to handle Tile Matrix Sets of which the first Tile Matrix has more than 8 columns and 8 rows, only in the case of a WebGL-enabled maps.
RasterTileSetLayer
can now display a red hatched rectangle instead of any actual imagery
data when zoomed out to a fair distance from the data.
More information can be found in the article
Why does my imagery layer show a red (hatched) rectangle on a WebGL map?
You can customize the style of the raster outline drawn when zoomed out far from the data.
For more information please refer to the article
Learn how to visualize and style raster data using a RasterTileSetLayer
.
and the API documentation of RasterStyle
, where you can find the new fillStyle
and lineStyle
properties.
New featureLuciadRIA
performanceHints.maxPointCount
property. This only applies to point clouds.
See Limiting the number of points in a layer for more details
New featureLuciadRIA
WebGLMap.webGLContext
and WebGLMap.reboot()
.
New featureLuciadRIA
ImprovementLuciadRIA
RIA-4335
GeoBuffer.contour
field.
ImprovementLuciadRIA
ScalingMode.ADAPTIVE_WORLD_SIZE
for HSPC point clouds. ScalingMode.ADAPTIVE_WORLD_SIZE
is now the recommended setting for all point clouds.
ImprovementLuciadRIA
RIA-4313
LoadSpatially
to request data with a single query object for the
whole 3D scene. For more information please consult LoadSpatiallyStrategyConstructorOptions
API.
ImprovementLuciadRIA
TileSet3DLayer
class has a new property named loadingStatus
,
which is an object that represents the layer's current status of tile loading and rendering. You can listen to
changes in this status by subscribing to the "LoadingStatusChanged"
event.
ImprovementLuciadRIA
RIA-4286
Cursor
implementation that iterates over an array of elements.
For more details, please consult ArrayCursor
API.
ImprovementLuciadRIA
RIA-3586
You can now use complex stroke lines with a width in world units, for example meters.
See the ComplexStrokedLineStyle.uom
property for details.
You can also scale your icon or text decorations in world size, see the size
property on their factory method options.
World-sized complex stroke lines are not supported in a non-WebGL Map
.
ImprovementLuciadRIA
RIA-4178
ImprovementLuciadRIA
RIA-4178
Transformation
class now has a new property inverseTransformation
that allows you to do transformations
from output reference back to input reference.
Bug fixLuciadRIA
Upgrade considerationLuciadRIA
RIA-3882
- A sample's
package.json
now mentions"type": "module"
. - A sample's
tsconfig.json
now sets"moduleResolution": "nodenext"
. - Imports in samples now also contain the file extension (
.js
or.jsx
)
Upgrade considerationLuciadRIA
The creation of WMTSTileSetModel
now can create a RasterTileSetModel
that does not have a quad-tree tile set structure.
Users of a WebGL enabled map are not affected by this change as the rendering supports this type of tile set structures.
Users of a Canvas map are affected as this map only supports raster tile sets that have a quad-tree structure.
You need to update the call for the WMTS model creation to restrict use to Tile Matrix Sets that have a quad-tree.
You can do this by adding the option useQuadTreeOnly: true
in the
WMTSTileSetModelCreateOptions
when calling the method createFromURL
or createFromCapabilities
.
Upgrade considerationLuciadRIA
The RasterTileSetModel
can now represent tile sets that are not a quad-tree.
It allows to create tile sets where the bounds on different levels are not exactly the same and for
which the number of rows and columns is not a power of two with respect to the top level.
The bounds for each level in the tile set must be aligned in the top-left corner.
The constructor options for the following raster models are affected by this change. They now use a new way to express the tile set structure.
RasterTileSetModelConstructorOptions
URLTileSetModelConstructorOptions
WMTSTileSetModelConstructorOptions
FusionTileSetModelConstructorOptions
To maintain backward compatibility these constructor options have an equivalent with Deprecated
in their name, i.e., RasterTileSetModelConstructorDeprecatedOptions
for
RasterTileSetModelConstructorOptions
.
When using TypeScript type declarations you may need to update your code to use the deprecated options type.
Upgrade considerationLuciadRIA
You can now use world-sized lines for non-draped 3D lines. Before, these were always draped on terrain.
The behavior is now in line with other shape painting: the line will be draped if you explicitly enable draping in your style, or if the line is 2D (Z=0 and depth=0). Otherwise, the line is not draped.
If you have 3D lines with a world size, these were always draped before, so if you want to keep that behavior, specify
draped: true
in your ShapeStyle
.
Upgrade considerationLuciadRIA
You can now use complex stroke lines for non-draped 3D lines. Before, these were always draped on terrain.
The behavior is now in line with other shape painting: the line will be draped if you explicitly enable draping in your style, or if the line is 2D (Z=0 and depth=0). Otherwise, the line is not draped.
If you have 3D lines with complex strokes, these were always draped before, so if you want to keep that behavior, specify
draped: true
in your ShapeStyle
.
In addition, the width of draped complex strokes is now much more stable, also when looking at the horizon.
Non-draped pixel-sized 3D lines with complex strokes are oriented towards the viewer. Draped strokes, or world-sizes strokes are never screen-oriented.
Keep in mind that certain deformations of your pattern is expected, particularly when looking along the line.
![Complex strokes on 3D lines](media/2023.0/complex_strokes.png)
2022.1
2022.1.09
ImprovementDefense Symbology
RIA-4314
![APP-6A Sea Mines before the change](media/2022.1/app6b_sea_mine_before.png)
![APP-6A Sea Mines after the change](media/2022.1/app6b_sea_mine_after.png)
Bug fixLuciadRIA
RIA-4348
Bug fixLuciadRIA
RIA-4341
Bug fixDefense Symbology
RIA-4328
The default hierarchy icon line color for Sea Mine symbols is now always black
#000000
instead of the symbology style's color (MilSymStyle.color
).
This improves consistency with the other symbols where the symbology style's color is only used to color offset lines, direction of movement arrows and other icon decorations.
2022.1.08
Bug fixLuciadRIA
RIA-4331
Bug fixLuciadRIA
RIA-4333
2022.1.07
Bug fixLuciadRIA
RIA-4304
FeatureLayer
: complex polygons would be rendered with artifacts when crossing the world
boundary of the projection used on the map.
Bug fixDefense Symbology
RIA-4327
Bug fixDefense Symbology
RIA-4319
Bug fixDefense Symbology
RIA-4312
2022.1.06
Bug fixLuciadRIA
Bug fixLuciadRIA
RIA-4309
Bug fixLuciadRIA
RIA-4306
FeaturePainter.paintLabel
and
FeaturePainter.paintBody
too excessively on hardware-accelerated maps.
Bug fixLuciadRIA
RIA-4303
FeaturePainter.drawLabel
when a FeatureLayer is invisible in the
LayerTree
.
Bug fixLuciadRIA
RIA-4293
2022.1.05
ImprovementLuciadRIA
RIA-4290, RIA-4292
FillStyle.uom
,
in a similar way as you draw world-sized icons.
FillStyle.width
and FillStyle.height
behave the same as
IconStyle.width
and IconStyle.height
.
ImprovementLuciadRIA
RIA-4218
ImprovementDefense Symbology
RIA-4232
The rendering of APP-6B Sea Mine symbols has been improved.
The outline of their icon is now painted in the MilSymStyle.color
,
where it used to be painted in the affiliation color.
If you want the effect as in the image below, you need to add color: "#000000"
,
in your MilSymStyle
. The default color of the outline is white ("#FFFFFF").
![APP-6B Sea Mines before the change](media/2022.1/app6b_sea_mine_before.png)
![APP-6B Sea Mines after the change](media/2022.1/app6b_sea_mine_after.png)
The rendering of Sea Mine symbols has been improved when their fill is disabled for various standards. When their symbol fill is disabled, the hierarchy representation is no longer filled, revealing additional details such as the 'N' icon inside the "Ground (Bottom) Non-Mine Mine-Like Contact" MIL-STD-2525c symbol. This makes the Sea Mine symbols more recognisable. This change affects the Sea Mine symbols in the following standards: APP-6D, MIL-STD-2525c, MIL-STD-2525d.
![Unfilled MIL-STD-2525c Sea Mines before the change](media/2022.1/ms2525c_unfilled_sea_mine_before.png)
![Unfilled MIL-STD-2525c Sea Mines after the change](media/2022.1/ms2525c_unfilled_sea_mine_after.png)
ImprovementDefense Symbology
RIA-4254
MilSymStyle.color
for unframed icon symbols,
line symbols, off-set lines of icon symbols and for movement direction arrows.
The new default color is white ("#FFFFFF"), to make sure that behavior does not change for you when not
using this new parameter.
Bug fixLuciadRIA
RIA-4270
Bug fixLuciadRIA
RIA-4262
Bug fixLuciadRIA
RIA-4261
Bug fixLuciadRIA
RIA-3850
FeaturePainter
: Vertical polygons could have a missing segment on the outline when
styled with a LineStyle
.
Bug fixLuciadRIA
RIA-4283
FeaturePainter
: points with a geocentric reference were incorrectly draped when their
z-coordinate is 0.
2022.1.04
Bug fixLuciadRIA
RIA-4282
EditHandle.onDrawLabel
would not be called when editing a
GeoBuffer
shape.
Bug fixLuciadRIA
RIA-4277
GeoJsonCodec
no longer removes the closing point when decoding a geometry object to a
LuciadRIA Polygon
.
Bug fixLuciadRIA
RIA-4269
Bug fixLuciadRIA
RIA-4273
Bug fixLuciadRIA
RIA-3908
Bug fixDefense Symbology
RIA-4248
2022.1.03
Bug fixLuciadRIA
RIA-4251
Bug fixLuciadRIA
RIA-4252
EditController
was activated before the feature/shape was
processed by the layer. For example, when immediately activating an EditController
after adding the layer to the map.
Bug fixLuciadRIA
RIA-4250
WebGLMap
that has a
TileSet3DLayer
, a "PostRender"
event listener and an active
EditController
.
Bug fixLuciadRIA
RIA-3929
Bug fixLuciadRIA
RIA-4083
2022.1.02
ImprovementLuciadRIA
RIA-4009
LuciadRIA now contains a sample that illustrates how to handle IFC datasets. The geometry is loaded as OGC 3D Tiles, the metadata information is loaded via a GeoJSON dataset. The sample shows how to combine geometry and metadata into a single application.
![IFC sample application](media/2022.1/ifc.png)
Bug fixLuciadRIA
RIA-4213
GestureEvent.modifier
(CTRL, ALT, SHIFT) is now also set for touch events. Users equipped with a keyboard and touchscreen can now
press shift and touch the screen to select multiple features.
Bug fixDefense Symbology
RIA-4229
![APP-6A APP-6B APP-6C Jet stream](media/2020.1/app6abc_jetstream.png)
Bug fixDefense Symbology
RIA-4227
MilSymStyle.labelPosition
property.
Bug fixDefense Symbology
RIA-4225
![APP-6A APP-6B Thunderstorm](media/2020.1/app6ab_thunderstorm.png)
Bug fixDefense Symbology
RIA-4099
2022.1.01
ImprovementLuciadRIA
Geodesy.distance3D
method now also accepts a LineType parameter. This means that it can now also be used for rhumb lines.
Bug fixLuciadRIA
RIA-1564
noClustering = true
).
Bug fixLuciadRIA
RIA-4221
Bug fixLuciadRIA
RIA-3900
Bug fixLuciadRIA
RIA-4217
SEPainterCreateOptions.DrapeTarget
led by default to
draping on terrain. Now the default DrapeTarget
is undefined, which means that if the
shape has zero Z, it will be draped on terrain and if it has non-zero Z, it will not be draped.
Bug fixLuciadRIA
RIA-4216
KMLCodec
decodes KML 'Polygon' geometry without inner boundaries to RIA Polygon
,
instead of to RIA ComplexPolygon
.
Bug fixLuciadRIA
RIA-4209
map.effects.eyeDomeLighting
in combination with map.effects.environmentMap
's skybox
could produce some visual artifacts.
Bug fixLuciadRIA
RIA-4172
Bug fixLuciadRIA
RIA-4173
Geodesy.distance3D
method didn't return correct results when using a geodetic reference.
2022.1
New featureLuciadRIA
LuciadRIA now supports draping of 2D raster and vector data on OGC 3D Tiles data. You can use the new DrapeTarget
enumeration on objects such as a ShapeStyle
, IconStyle
and RasterStyle
to indicate whether the data needs to be draped on 3D Tiles and/or on terrain. You can also choose which 3D Tiles layers need
to be taken
into account for draping by means of a new isDrapeTarget
flag on TileSet3DLayer
. The use of this API
is demonstrated in the "OGC 3D Tiles" sample, which has been extended with a walking tour draped on top of the Marseille 3D
tiles mesh data.
For more information, see the
Draping on 3D Tiles article.
![Draping of vector data on an OGC 3D Tiles layer](media/2022.1/draping.png)
New featureLuciadRIA
- For point symbolizers:
- The use of SVG images through the icon provider.
- The use of UOM-aware stroke widths for marks.
- For line symbolizers:
- The use of line joins (mitre, round or bevel) and line caps (butt, round or square) in strokes.
- The combination of a stroke with a graphic stroke (dash-array, graphic rotation).
- The use of displacement and anchor points for the graphics in a graphic stroke.
- The use of perpendicular offset without gaps or overlaps at the line joins.
- The use of UOM-aware graphic fill for strokes.
- For polygon symbolizers:
- The use of the same improved stroke support as for line symbolizers.
- The use of UOM-aware graphic fills.
- The use of UOM-aware displacement.
- The use of UOM-aware perpendicular offset.
For a complete overview of the supported SLD styling capabilities, see the SLD styling - Supported versions and capabilities article.
![Showcase the use of newly supported features.](media/2022.1/ogcse.png)
New featureLuciadRIA
Editor
and
EditHandle
classes give fine-grained access to the way how features or shapes should be
edited and created. Users can implement their own editor or extend from one of the many out-of-the-box
implementations available for LuciadRIA's shape types. The use of this API is demonstrated in the "Create and Edit" sample,
which has been extended with a few common custom creation and editing use cases. Read the
Customizing creation and editing
guide to get started.
![Custom arrow shape editor](media/2022.1/editing.png)
New featureLuciadRIA
Map
.
See Map.cursorManager
, Controller.cursor
and the
Implementing custom user interaction
guide for more details.
New featureLuciadRIA
RIA-3611, RIA-3561
SelectController
ContextMenuController
PanController
RotateController
ZoomController
HoverController
New featureLuciadRIA
Undoable
and
UndoManager
API. The use of this API is demonstrated in the samples that focus on
creation and editing, such as the "Create and Edit" sample. See
Adding undo/redo support to your application
for more information.
New featureLuciadRIA
You can now add bloom to shapes. Bloom is a glow effect that you can use to make shapes appear very bright, and draw focus to them.
![Bloom vs. no bloom](media/2022.1/bloom.png)
For more information, see BloomStyle
and BloomEffect
.
You can also read the "Bloom effect" section in
Configuring WebGL Map effects.
New featureDefense Symbology
BloomStyle
for your military symbology layers on WebGL maps.
To do so, you set a bloom: BloomStyle
in your
MilSymStyle
when creating a MilitarySymbologyPainter
. You can
choose to apply the style to a certain PaintState
only.
ImprovementLuciadRIA
RIA-4125
PropertyExists
function of the OGC filter encoding standard.
You can for example use this function in an SLD style to skip painting labels for non-existing properties
in your dataset (instead of painting them as "undefined").
ImprovementLuciadRIA
RIA-4102
projection-wkt
property).
Before, only HSPC references expressed with an EPSG code (projection-epsg
property) were supported.
ImprovementLuciadRIA
ImprovementLuciadRIA
RIA-3959, RIA-3354
CompositeController
.
This was already available in sample code, but has been promoted to API.
ImprovementLuciadRIA
Bug fixLuciadRIA
RIA-3933
FeaturePainter
: when a shape with the same geometry but a different reference
(e.g. topocentric with different origin) was submitted for drawing, it was not visually updated on the map.
Upgrade considerationLuciadRIA
EditController
has 2 new events: "Restarted"
and "EditShape"
.
If you extended EditController
and you added extra events, you'll have to update your
EditController
extension to account for these extra events.
Upgrade considerationLuciadRIA
RIA-3777
Feature
, Store
and Codec
implementations are now type guarded with generics. Please refer to the TSDoc for more details.
If the inferred type is too restrictive, force a more generic type.
// Let TS compiler know that feature's shape is a point and its properties can contain the population field.
interface CityProperties { name: string; population?: number};
const cityFeature = new Feature<Point, CityProperties>(point, { name: 'Leuven'});
// Let TS compiler know that the store can accept features with a polyline or a polygon shape and any properties.
const store = new MemoryStore<Feature<Polyline | Polygon, FeatureProperties>>(data: [polylineFeature]);
Upgrade considerationLuciadRIA
CreateController.onObjectCreated
now has a return type of
void | Promise<void>
. This reflects the actual implementation. The old
boolean
return value was already ignored.
Upgrade considerationLuciadRIA
layer
of a CreateController
and EditController
is now typed more accurately as FeatureLayer
instead of Layer
.
Upgrade considerationLuciadRIA
libcurl
: updated to version7.86.0
openssl
: updated to version1.1.1s
zlib
: updated to version1.2.13
Upgrade considerationLuciadRIA
ms-gsl
library version 3.1.0
has been added.
This library is used in internal code. No code changes are needed.
2022.0
2022.0.07
Bug fixLuciadRIA
RIA-4160
Bug fixLuciadRIA
RIA-4148
Geodesy
instances returned a distance in degrees instead of meters
for the shortestDistanceToLine
method.
Bug fixLuciadRIA
Geodesy.area
could return incorrect results for triangles with coinciding points.
Bug fixLuciadRIA
RIA-4167
Bug fixLuciadRIA
RIA-4156
2022.0.06
ImprovementLuciadRIA
RIA-4135
WFSFeatureStore.query
and
WFSFeatureStore.spatialQuery
methods.
The returned type is a promise of the Cursor
only.
ImprovementLuciadRIA
RIA-4044
SortBy
condition.
For more information please consult the WFSQueryOptions.sortBy
API.
Bug fixLuciadRIA
RIA-4144
Controller
disappear from a non-hardware accelerated map
after feature layers repaint their labels.
Bug fixLuciadRIA
RIA-4142
RasterLayer
: For some specific camera positions it was possible that parts of the terrain were
missing. This resulted in gaps in the visualization of the terrain and possibly large camera movements when
navigating.
Bug fixLuciadRIA
RIA-4117
Bug fixLuciadRIA
RIA-4111
GoogleLayer
is no longer supported on Internet Explorer 11.
GoogleLayer
used the Google Maps API to embed Google Maps data in a LuciadRIA non-hardware
accelerated 2D Map. Google dropped support for running the Google Maps API in Internet Explorer 11 in
November 2022. The Google Maps API now exits with an error if you try to load it in Internet Explorer.
2022.0.05
Bug fixLuciadRIA
RIA-4105
LabelCanvas.drawLabelOnPath
is now redrawn
when its associated shape is mutated.
Before the fix, on-path labels were not repainted along their mutated shapes.
2022.0.04
ImprovementDefense Symbology
RIA-4091
speedLeaderLengthRatio
inside
MilSymStyle
.
The length in pixels of your speed leader is calculated as
speed(m/s)*speedLeaderLengthRatio*iconSize
and is clipped between 1*iconSize
and
maxRatioMovementDirectionArrow*iconSize
.
Bug fixLuciadRIA
RIA-4063
2022.0.03
ImprovementLuciadRIA
RIA-4064
OcclusionMode
style that makes the shape visible even if it is obscured by other objects.
In this case the feature's corresponding label stays visible too.
ImprovementLuciadRIA
RIA-4065
LoadSpatially
strategy will log a warning message when
the computed spatial BBOX object has a 0 width or height value.
Such a situation can happen when there is no intersection between the current view extent and the
FeatureModel.bounds
, provided the model bounds is defined.
ImprovementLuciadRIA
RIA-1000
LoadSpatially
strategy behavior when the underlying
WFSFeatureStore
requests a limited number of features with the
WFSQueryOptions.maxFeatures
query parameter.
In this case, the layer might not re-query the data after zooming in.
Now, after zooming in, a new query is launched to get a new set of features when relevant to the new view extent.
ImprovementDefense Symbology
RIA-4062
MilSymStyle
has been extended with a property labelStyleGroup
,
Put it to "NON_DECLUTTERED" to disable label decluttering for all symbols on the map.
More information can be found in LabelStyle.group
.
ImprovementDefense Symbology
RIA-4056
- Use the search bar to easily find a certain symbol by name or code.
- Use the "Anchor Points" layer to see the anchor points and their order used to create the symbol.
ImprovementDefense Symbology
RIA-3477
-
We introduced two new
MilSymStyle
properties that define the appearance of tactical graphics:skeleton
to indicate that you want a simplified style without decorations for your tactical graphics (false by default), andbody
to indicate that you prefer the full, correct styling for your tactical graphic (true by default). -
We offer the possibility to make your
MilitarySymbologyPainterConstructorOptions
.style
PaintState
-dependent.
Bug fixLuciadRIA
RIA-4053
2022.0.02
ImprovementLuciadRIA
RIA-3918
Bug fixLuciadRIA
RIA-866
FeatureLayer.filter
predicate.
In such a situation such a feature was painted on a non-hardware accelerated map.
This situation happened when a filter predicate was set on a layer before the layer was added to a map.
Bug fixLuciadRIA
RIA-4042
Bug fixLuciadRIA
RIA-4039
Bug fixLuciadRIA
RIA-3613
Bug fixLuciadRIA
RIA-4040
Bug fixLuciadRIA
RIA-3523
2022.0.01
ImprovementLuciadRIA
RIA-3948
WFSFeatureStore
from a WFS capabilities object
you can override the service URL both for the GET and the POST method.
Before you could override the service URL for the GET method only. For more details please consult
WFSFeatureStoreCreateOptions.serviceURL
API.
ImprovementLuciadRIA
RIA-4020
GeoJsonCodec
encodes a ShapeList
instance
to a GeoJSON geometry based on its child shapes.
With the GeoJsonCodecConstructorOptions.encodeShapeListAsGeometryCollection
API
you can override this behavior so that a ShapeList
instance is always encoded as
a GeoJSON 'GeometryCollection'.
ImprovementLuciadRIA
RIA-3999
ImprovementLuciadRIA
RIA-2944
FeatureModel
, with a WFSFeatureStore
created
from WFS capabilities, sets the spatial extent of the data (FeatureModel.bounds
)
based on the bounds reported in the WFS capabilities object.
That way you can fit on model bounds even if WFS data is not yet loaded.
ImprovementLuciadRIA
RIA-4019
ImprovementLuciadRIA
RIA-3997
GMLCodec
can decode now GML Circle geometries: a 'Circle' (defined by 3 points) and 'CircleByCenterPoint'.
Bug fixLuciadRIA
RIA-3961
Bug fixLuciadRIA
RIA-4010
WFSFeatureStore
from a WFSCapabilities
object can use now
otherReferences
if the
defaultReference
is not known in the ReferenceProvider
.
Bug fixLuciadRIA
RIA-4016
WFSCapabilitiesFeatureType.otherReferences
property,
which is now string[]
instead of string
.
Bug fixLuciadRIA
RIA-2914
Bug fixLuciadRIA
RIA-3984
WMTSTileSetModel
from a WMTSCapabilities
object now no
longer throws an error if the GetCapabilities response contains a CoordinateReference
that
is not known in the ReferenceProvider
. TileMatrixSets with such a
CoordinateReference
are disregarded instead.
Bug fixLuciadRIA
RIA-3998
GMLCodec
decodes GML 'Polygon' and 'PolygonPatch' geometries without an interior ring to RIA Polygon
,
instead of to ComplexPolygon
.
Bug fixLuciadRIA
RIA-3993
Bug fixDefense Symbology
RIA-4028
2022.0
New featureLuciadRIA
New featureLuciadRIA
New featureLuciadRIA
You can now enable GPU texture compression on TileSet3DLayer
for OGC 3D Tiles mesh data.
This can greatly reduce the amount of GPU memory needed, improve performance and stability.
Enable when displaying meshes with large textures, such as reality capture reconstructions. By default, texture
compression is enabled.
Disable when displaying meshes with lookup textures, such as CAD models.
If your environment does not support GPU texture compression, setting the flag has no effect. Use the "Device Support" sample to verify if texture compression is supported on your device.
New featureLuciadRIA
HTMLVideoElement
as a texture on a mesh. For more information,
see MeshCreateOptions.image
.
See the
how-to guide on visualizing 3D icons
for more information on how to use video as texture.
New featureDefense Symbology
MilitarySymbologyPainter#createSymbolImage
.
New featureDefense Symbology
ImprovementLuciadRIA
ImprovementLuciadRIA
performanceHints
property has been added to
FeatureLayerConstructorOptions
. It provides settings that can dramatically improve the
layer's data loading performance in some situations. Please refer to the API reference documentation for more
information on when these settings can be applied.
ImprovementLuciadRIA
It can be used to distinguish pixels that are part of front-facing triangles. This expression for example makes back-facing pixels transparent:
map.layerTree.addChild(new TileSet3DLayer(model, {
transparency: true,
meshStyle: {colorExpression: ifThenElse(frontFacing(), defaultColor(), multiply(defaultColor(), color("rgba(255, 255, 255,
0.3")))}
}));
Note that if you just want to hide back-facing triangles, it's better to use the facetCulling
option.
map.layerTree.addChild(new TileSet3DLayer(model, {
meshStyle: {facetCulling: FacetCullingType.BACKFACE_CULLING}
}));
ImprovementLuciadRIA
ImprovementLuciadRIA
RIA-3936
ImprovementLuciadRIA
RIA-3762
ImprovementLuciadRIA
You can now set WebGLMap.maxMemoryUsageHint.cpuMB
and
WebGLMap.maxMemoryUsageHint.gpuMB
to values higher than 4000MB.
Previously, this would be capped at 4000MB. This allows you to use more memory in your application.
It is intended for software that is run on high-end clients.
It is intended for use on high-end devices with enough available memory. Setting this number too high can cause instability.
ImprovementLuciadRIA
We replaced the PointCloudStyle.scalingMode
option with PointCloudStyle.pointSize
,
which gives you more control over the point cloud dot size.
You can still use the existing scalingMode
option for backwards compatibility.
ImprovementLuciadRIA
RIA-3775
LuciadRIA now supports Hexagon Smart Point Clouds (HSPC) in 2D EPSG references.
Before, we supported only HSPC datasets in 3D geocentric (EPSG:4978) coordinates, and non-referenced datasets.
Note that we still recommend to process your HSPC data in 3D geocentric coordinates, for optimal streaming performance.
When relying on Hexagon's HSPC conversion functionality available in myVR
, you can do this for example with these conversion parameters: mHSPCConverter --source_projection EPSG:7415 --output_projection EPSG:4978
.
ImprovementLuciadRIA
We did various improvements to our point cloud rendering visual quality and performance, in particular for Hexagon Smart Point
Cloud (HSPC).
For details, see the documentation of
PointCloudStyle
and the documentation articles Tuning performance and visual quality of point clouds and Visualize Hexagon Smart Point Cloud (HSPC) data.
Performance
We improved raw painting performance of all point clouds.
Your map will be more interactive and fluent when loading lots of points.
We added a new option PointCloudStyle.pointShape
which influences how points are drawn, and how overlap between points is handled.
When using SPHERE
, overlap result in a high quality visual coverage of your data, but at the cost of performance.
We propose to use DISC
when you have a small point size as it improves performance.
The default is DISC
for HSPC, SPHERE
for OGC 3D Tiles.
World-sized dots
Next to the existing PIXEL_SIZE
and ADAPTIVE_WORLD_SIZE
, there is a new scaling mode
WORLD_SIZE
. This mode is particularly useful for HSPC. It allows points to grow larger when you get close to them,
based on a physical size in meters. This helps creating a visually closed surface up-close instead of having interspersed
small dots.
For details see the pointSize
property on PointCloudStyle
.
Incremental and partial tile painting
We now display HSPC point cloud tiles partially, based on their level-of-detail.
This avoids highly visible transitions between tiles of different level-of-detail.
This is automatically enabled for HSPC.
Gap-filling post-processing effect
We added an optional point cloud post-processing effect that intelligently fills up small gaps between points.
This helps creating a visually closed surface by in-painting gaps of 1 or 2 pixels.
You can enable it using the gapFill
property on PointCloudStyle
.
ImprovementLuciadRIA
RIA-1437
WFSFeatureStore
and
UrlStore
will be propagated to the underlying codec on each query request.
Also, it is possible now to specify in GeoJsonCodec
and
GMLCodec
the reference of decoded shapes, which will override the default reference from data that is being decoded.
ImprovementLuciadRIA
RIA-3617
IconStyle
: with IconStyle.modulationColor
it is now possible
to configure a color that is modulated with the icon. For example using an icon with gray-scale colors and a
red modulation color will result in a resulting painted icon with red hues. Note that this will only be applied
on a WebGL map.
ImprovementLuciadRIA
Icon3DStyle
in order to allow for correct rendering
of meshes with transparent components. This should be set to true when a mesh either has a color or texture with an
alpha channel less than 1.0.
Note that setting it to true might impact performance.
Bug fixLuciadRIA
RIA-1016
FeaturePainter.paintLabel()
or
Controller.onDrawLabel()
are not displayed on the WebGLMap,
if the painter or controller does not also draw bodies for label shapes.
Upgrade considerationLuciadRIA
fast_float
library version 3.4.0
has been added.
This library is used to parse floating point values from strings.
Upgrade considerationLuciadRIA
Upgrade considerationLuciadRIA
RIA-3960
zlib
library has been updated to v2.1.12
.
Upgrade considerationLuciadRIA
myVRPointCloud
, jsoncpp
, pdqsort
, and zstd
to support Hexagon Smart Point Cloud (HSPC). These new dependencies require no code changes.
Upgrade considerationLuciadRIA
@luciad/ria/shape/format/MGRSPointFormat
and
@luciad/ria/shape/format/GARSPointFormat
have been moved to LuciadRIA's
Defense Symbology component. They have also been renamed. You can now find these in
@luciad/ria-milsym/text/mgrs/MGRSFormat
and
@luciad/ria-milsym/text/gars/GARSFormat
.
Additionally, the GARSFormatPrecision
, MGRSFormatPrecision
and
MGRSFormatType
enums have been moved into their own modules:
@luciad/ria-milsym/text/gars/GARSFormatPrecision
,
@luciad/ria-milsym/text/mgrs/MGRSFormatPrecision
and
@luciad/ria-milsym/text/mgrs/MGRSFormatType
Upgrade considerationLuciadRIA
Upgrade considerationLuciadRIA
Upgrade considerationLuciadRIA
Upgrade considerationLuciadRIA
WebGL2RenderingContext
is now passed in the callback of the
PostRender
event, instead of a WebGLRenderingContext
.
Upgrade considerationLuciadRIA
RIA-3710
WFSFeatureStore.createFromURL
and
WFSFeatureStore.createFromCapabilities
use now the options parameter of the same type WFSFeatureStoreCreateOptions
.
That way both the creation functions can use the same set of input parameters.
Before the version
property was missing in the options for
WFSFeatureStore.createFromURL
.
2021.1
2021.1.11
Bug fixDefense Symbology
RIA-3975
2021.1.10
Bug fixLuciadRIA
RIA-3925
Bug fixLuciadRIA
Bug fixLuciadRIA
RIA-3966
Bug fixLuciadRIA
RIA-3963
npm run dev
in the samples.
The following webpack-cli
error was triggered:
[webpack-cli] TypeError: cli.isMultipleCompiler is not a function
2021.1.09
Bug fixLuciadRIA
RIA-3938
IconStyle
: draped icons for points defined in a reference with another geodetic datum than
the world reference would appear to be moving in a 3D view when navigating.
Bug fixLuciadRIA
RIA-3937
2021.1.08
ImprovementLuciadRIA
LCD-12276
Bug fixLuciadRIA
RIA-3923
Bug fixLuciadRIA
RIA-3932
TileSet3DLayer
, we now identify mimetype image/jpg
as JPEG. Previously,
this was limited to image/jpeg
, but now both forms are accepted.
Bug fixLuciadRIA
RIA-3930
2021.1.07
Bug fixLuciadRIA
RIA-3920
LayerGroup.whenReady()
was timing out when
one of its children nodes was a hidden layer, that is a layer with
visible
state set to false
.
Bug fixLuciadRIA
RIA-3916
Bug fixLuciadRIA
RIA-3914
2021.1.06
ImprovementLuciadRIA
RIA-3901
ImprovementLuciadRIA
RIA-3891
ImprovementLuciadRIA
RIA-3910
ReferenceProvider
's parseWellKnownText
and
ReferenceOptions.polarStereographicLatitudeExtent
for more details.
ImprovementLuciadRIA
RIA-3890
CreateController
by setting
CreateControllerConstructorOptions.freehand
to false
.
Bug fixLuciadRIA
RIA-3898
Bug fixLuciadRIA
RIA-3897
GMLCodec
where a PolygonPatch
with many interior rings was decoded to RIA ComplexPolygon
with a single interior shape only.
Now such a GML geometry is properly decoded to the ComplexPolygon
with many holes.
Bug fixLuciadRIA
RIA-3571
- an incorrect prime meridian shift
- a prime meridian shift that was applied twice
- incorrect projection parameters
Bug fixLuciadRIA
RIA-3902
Bug fixLuciadRIA
RIA-3895
Bug fixLuciadRIA
RIA-3894
Bug fixDefense Symbology
RIA-3903
2021.1.05
ImprovementLuciadRIA
RIA-3862
adjustDepthRange
property on WebGLMap
.
This allows you to specify whether the distance to the near and far planes of the map's camera should automatically
adjust when the camera or terrain gets updated.
Bug fixLuciadRIA
RIA-3880
Bug fixDefense Symbology
RIA-3887
2021.1.04
ImprovementDefense Symbology
RIA-3877
Bug fixLuciadRIA
RIA-3878
map.mapNavigator.zoom
was called
immediately after creating a 2D WebGLMap
.
Bug fixLuciadRIA
RIA-3871
- EPSG:2065
- EPSG:5513
- EPSG:8352
Bug fixLuciadRIA
RIA-2906
Polygon
shapes with GeoJsonCodec
will never duplicate the
last point.
Before the fix the closing point could be encoded twice.
Bug fixLuciadRIA
RIA-3780
KMLLayer
now prevents drawing lines that are styled with the
width
property set to 0 in KML data. Before the fix attempts to draw such lines caused GL errors being logged on the
console.
Bug fixLuciadRIA
RIA-3799
Point
that is passed to
ShapeFactory.createPolyline()
or ShapeFactory.createPolygon()
is cloned.
That way, if the same point is used to create different Polyline
and Polygon
shapes,
then its subsequent mutations will not affect these shapes.
Before this fix these shapes were affected.
Note: for performance reason, please favor passing a collection of PointCoordinates
into ShapeFactory.createPolyline()
and ShapeFactory.createPolygon()
.
Bug fixLuciadRIA
RIA-1891
UrlStore
now also applies requestParameters in
query()
. Before this fix you could pass requestParameters
to
the constructor, but they were not applied. You can now also alter requestParameters
at
runtime.
Bug fixDefense Symbology
RIA-3874
2021.1.03
ImprovementLuciadRIA
RIA-3847
GMLCodec
a feature ID provider
to generate consistent IDs for features that do not contain IDs in the decoded data.
For more information please consult GMLCodecConstructorOptions.idProvider
API.
ImprovementDefense Symbology
RIA-3840
movementDirection
modifier was added to the following symbol hierarchies:
- MIL-STD-2525D: 01 - Air
- MIL-STD-2525D: 02 - Air Missile
- MIL-STD-2525D: 05 - Space
- MIL-STD-2525D: 06 - Space Missile
- MIL-STD-2525D: 30 - Sea Surface
- MIL-STD-2525D: 35 - Sea Subsurface
- APP-6C: 01 - Air
- APP-6C: 02 - Air Missile
- APP-6C: 05 - Space
- APP-6C: 06 - Space Missile
- APP-6C: 30 - Sea Surface
- APP-6C: 35 - Sea Subsurface
speedLabel
modifier was added to the following symbol hierarchies:
- MIL-STD-2525D: 35 - Sea Subsurface
- APP-6C: 01 - Air
- APP-6C: 02 - Air Missile
- APP-6C: 05 - Space
- APP-6C: 06 - Space Missile
- APP-6C: 30 - Sea Surface
- APP-6C: 35 - Sea Subsurface
movementDirection
modifier was removed from the following symbol hierarchies:
- MIL-STD-2525D: 20 - Land Installations
- APP-6C: 20 - Land Installations
- APP-6D: 11 - Land Civilian Organization
- APP-6D: 20 - Land Installation
- APP-6D: 25 - Control Measure
speedLabel
modifier was removed from the following symbol hierarchies:
- MIL-STD-2525D: 20 - Land Installations
- APP-6C: 20 - Land Installations
- APP-6D: 11 - Land Civilian Organization
ImprovementDefense Symbology
RIA-3806
MilSymStyle.symbolIcon
defaults to true.MilSymStyle.symbolFrameEnabled
defaults to true.MilSymStyle.symbolFill
defaults to true.MilSymStyle.symbolFillPercentage
defaults to 1,0.MilSymStyle.affiliationColorEnabled
defaults to true.
![Image showing the effect of the new style properties on an icon.](media/2021.1/AdvancedIconStyleProperties.png)
Bug fixLuciadRIA
RIA-3255
SEPainterFactory
: the painter did not always respect the order of drawing as defined in a
Symbology Encoding file on a WebGLMap
.
Bug fixLuciadRIA
RIA-3793
LayerGroup
now checks for unique layer tree node IDs in
canAddChild
and throws an error when children with overlapping IDs are added with addChild
.
This was previously not enforced but could lead to unexpected problems.
Bug fixLuciadRIA
RIA-3827
LoadEverything
strategy rejects loading data on changing map scale
levels. This situation can happen when the load everything strategy uses
QueryProvider
that defines multiple query level configurations, of which one returns the null
query object.
This query object means that the model should be queried for all data.
Bug fixDefense Symbology
RIA-3841
2021.1.02
ImprovementLuciadRIA
RIA-3783
ImprovementLuciadRIA
RIA-3832
ParameterizedPointPainter
: a small performance improvement was done to reduce the loading time
of a large set of points using the same styling.
2021.1.01
Bug fixLuciadRIA
RIA-3765
MeshStyle
: When a displacement expression was set with a parameter that was not a
vector, an error would be thrown.
Bug fixLuciadRIA
RIA-3524
Bug fixLuciadRIA
RIA-3764
FeaturePainter
: the type of the density
property was wrong. To
configure the density you need to set an object literal with a ColorMap
, this is now
reflected in the TypeScript typing correctly.
Bug fixLuciadRIA
RIA-3808
Bug fixLuciadRIA
RIA-3804
2021.1
New featureLuciadRIA
@luciad/ria/model/tileset/HereMapsTileSetModel
allows to create
a model for the desired HERE data, which can then be added to a LuciadRIA map using a
RasterTileSetLayer
.
![Different HERE maps showing aerial imagery, roads and traffic data.](media/2021.1/here.webp)
New featureLuciadRIA
GraphicsEffects
. This allows you to visualize an
environment map to improve the realism of your scenes.
New featureLuciadRIA
Introduced the PBRSettings
property on Icon3DStyle
and
MeshStyle
. This allows the use of the
PBR material information in glTF files
to visualize objects in a more realistic, physically based way.
![An industry plant CAD model visualized with PBR.](media/2021.1/pbr.png)
New featureLuciadRIA
TextSymbolizer
s
as specified in the OpenGIS Symbology Encoding specification version 1.1.0 (OGC 05-077r4). These
TextSymbolizer
s have a uom
in meters or feet.
The use of a world-sized TextSymbolizer
is illustrated in the Symbology Encoding sample for
large cities and roads.
New featureLuciadRIA
RIA-3719
Icon3DStyle
and OGC 3D Tiles.
New featureLuciadRIA
RIA-3698
Icon3DStyle
and OGC 3D Tiles.
ImprovementLuciadRIA
RIA-3805
mHSPCConverter
version 2021.10.
See HSPCTilesModel
for details.
ImprovementLuciadRIA
ImprovementLuciadRIA
Icon3DStyle
has been extended:
- it can now handle glTF files with multiple textures; previously, only the first encountered texture was used for visualization,
- the texture wrapping is now also parsed and used for visualization.
ImprovementLuciadRIA
createTranslationTransformation
and
createRotationTransformation
to Affine3DTransformation
to have additional building blocks to position and orient a
non-referenced dataset.
ImprovementLuciadRIA
createTopocentricReference
to ReferenceProvider
for creating
topocentric references, which are local, georeferenced, cartesian coordinate references. Topocentric references are
supported by the TransformationFactory
as well, allowing conversions between topocentric
and any other spatial references.
ImprovementLuciadRIA
WebGLMap
now emits events named "PostRender". The callback on this event hook gets called
every frame, after the LuciadRIA layers have been rendered, and gets the WebGL rendering context as a parameter.
This allows you to add externally rendered graphics to a LuciadRIA map.
ImprovementLuciadRIA
ShapeFactory.createOrientedBox
.
ImprovementLuciadRIA
addSelection
from
@luciad/ria/view/feature/FeaturePainterUtil
now supports selection styling of ComplexStrokedLineStyle
and text with a halo set.
ImprovementLuciadRIA
RIA-3734
ImprovementLuciadRIA
IconProvider
to the
SEPainterFactory
factory methods. This IconProvider
allows mapping
ExternalGraphics
elements onto icon images or URL's.
ImprovementLuciadRIA
TextSymbolizer
will disable decluttering for those labels.
The default value for this vendor option can be adjusted in the SEPainterCreateOptions
.
ImprovementLuciadRIA
TextSymbolizer
s which explicitly declare a
PointPlacement
, LuciadRIA will now apply this placement strictly, meaning that it will no
longer move the label around when it would otherwise fall outside of the view. Additionally, the
rotation
tag in this PointPlacement
is now supported as well.
Bug fixLuciadRIA
RIA-3597
Bug fixLuciadRIA
Bug fixLuciadRIA
RIA-3778
FlickerController
ended up in a broken state when a click event
happened before first configuring which layers to flicker between.
Bug fixLuciadRIA
RIA-3774
GestureEventType.TWO_FINGER_DRAG
touch events are only recognized if
the touch movement starts with a vertical movement.
Bug fixLuciadRIA
Upgrade considerationLuciadRIA
TileSet3DLayer
: the default loading strategy is now
TileLoadingStrategy.OVERVIEW_FIRST
. This change was done as this strategy typically yields
a better user experience. You can restore the old default by setting
TileSet3DLayer.loadingStrategy
to TileLoadingStrategy.DETAIL_FIRST
.
Upgrade considerationLuciadRIA
Upgrade considerationLuciadRIA
RIA-3715
Upgrade considerationLuciadRIA
RIA-3711
2021.0
2021.0.09
Bug fixLuciadRIA
RIA-2964
Bug fixLuciadRIA
RIA-3766
2021.0.08
Bug fixLuciadRIA
RIA-3768
propertyColorExpressions
set via the constructor options of
ParameterizedLinePainter
and TrajectoryPainter
were not set correctly,
and thus had no effect.
Bug fixLuciadRIA
RIA-3760
npm run dev
in RIA samples gave errors.
This was caused by an issue in webpack-cli
.
Bug fixLuciadRIA
RIA-3758
Bug fixLuciadRIA
RIA-3757
FeatureModel.remove()
method.
Bug fixLuciadRIA
RIA-3753
FeatureModel
where the setter for modelDescriptor
used to create a copy of the passed object. Now modelDescriptor
that is passed to the model
and retrieved from the model is strictly the same object.
Bug fixLuciadRIA
RIA-3755
WMTSTilesetModel
s created with urls containing query parameters would fire invalid requests.
This also affected models created with WMTSCapabilities
Bug fixLuciadRIA
RIA-3717
keywords
in WMTSCapabilities
to
be an array of OGCCapabilitiesKeywords
. Also, the type
property in
OGCCapabilitiesKeywords
is optional and can now also be null
.
2021.0.07
ImprovementLuciadRIA
RIA-3486
focusPoint
.
Before only features with the Point
shape were eligible for clustering.
Bug fixLuciadRIA
RIA-3696
Bug fixLuciadRIA
RIA-3738
TileSetAttributionProvider
emitted
AttributionStringsChanged
and AttributionLogosChangedEvents
events
with string[][]
values instead of string[]
values
Bug fixLuciadRIA
RIA-3750
Bug fixLuciadRIA
RIA-3677
2021.0.06
ImprovementDefense Symbology
RIA-3729
Bug fixLuciadRIA
RIA-3735
npm run dev
in the RIA samples. If you specified a CLI option
(for example, --port
), the webpack devserver would not run.
It failed with a "Unknown option" error.
Bug fixLuciadRIA
RIA-3722
CreateController
: in some cases the created shape would remain visible on the map, even
when removing the layer.
Bug fixLuciadRIA
RIA-3730
RasterTileSetModel
on a WebGLMap
,
either by calling invalidate()
explicitly, or implicitly by changing settings on WMSTileSetModel
and others.
In rare cases, some old tiles would still be visible and would not be updated.
2021.0.05
ImprovementLuciadRIA
RIA-2888
ImprovementLuciadRIA
RIA-3708
IconStyle
: image with a height larger than 510 pixels could appear blurry, this threshold has
now been increased to 2046 pixels.
Bug fixLuciadRIA
RIA-3718
npm run dev
in a sample.
Starting the webpack devserver resulted in a Invalid configuration object
error.
Bug fixLuciadRIA
RIA-3714
GestureEventType.PINCH
touch events. These events were not always correctly recognized.
2021.0.04
ImprovementLuciadRIA
RIA-3532
ImprovementLuciadRIA
RIA-3699
createFromURL()
and
createFromCapabilities()
factory methods on WMSTileSetModel
,
WMSImageModel
, WMTSTileSetModel
,
FusionTileSetModel
and WFSFeatureStore
. This allows you to
override the URLs returned by the server's GetCapabilities
response.
Bug fixLuciadRIA
RIA-3704
GeoBuffer.copy()
now correctly copies GeoBuffer.endCapStyle
as well.
Bug fixLuciadRIA
RIA-3703
GeoBuffer
that have
EndCapStyle.CAP_BUTT
: while changing the width of these shapes, a helper geobuffer with
EndCapStyle.CAP_ROUND
was drawn.
Bug fixLuciadRIA
RIA-3534
HttpRequestOptions
that are passed to the static createFromURL()
method in WMSTileSetModel
, WMSImageModel
,
WMTSTileSetModel
, FusionTileSetModel
and
WFSFeatureStore
are now also used when performing the GetCapabilities request to the service.
Bug fixLuciadRIA
RIA-3675
UrlTileSetModel
now also applies requestParameters in
getTileURL()
. Before this fix you could pass requestParameters
to
the constructor, but they were not applied. You can now also alter requestParameters
at
runtime.
Bug fixDefense Symbology
RIA-3542
2021.0.03
Bug fixLuciadRIA
RIA-3676
FusionTileSetModel
now also supports domain rotation when generating tile URLs. Use
the {s}
placeholder in the model's URL. The list of domains can be configured through
the subdomains
constructor and runtime property.
Bug fixLuciadRIA
RIA-3669
EditController
when it was used as a delegate of another controller.
Bug fixLuciadRIA
RIA-3659
FeaturePainter
: Lines with an altitude not equal to 0, styled with a non-draped
ComplexStrokedLineStyle
were visualized incorrectly and caused selection problems. Since at
the moment it is not possible to use a non-draped ComplexStrokedLineStyle
, draping is now
enforced for this style.
2021.0.02
Bug fixLuciadRIA
RIA-3668
tileset.json
refers to another
tileset.json
in a subfolder, which in turn refers to another
tileset.json
that has nodes without content.
Bug fixLuciadRIA
RIA-3663
WorkingSet
emits the QueryError
event.
The fix prevents the parallel cursor processing by handling the last successfully resolved cursor.
Bug fixLuciadRIA
RIA-3664
Bug fixLuciadRIA
RIA-3640
FeatureLayer
: when hovering was enabled on a layer, an error indicating a feature couldn't be
hovered was sometimes thrown incorrectly.
2021.0.01
ImprovementLuciadRIA
RIA-3660
FusionPanoramaModel
. Now URL's that contain key-value
pair request parameters at the end of the request will have those key-value pairs passed to the image server.
ImprovementLuciadRIA
RIA-3646
Added new API to allow facet culling of meshes in OGC 3D Tiles. The new API is available in
MeshStyle.facetCulling
. By default, nothing changes and all meshes are painted without
culling. This means both the back and the front of each triangle is painted. This is the most robust, but also
at a slight cost of rendering performance.
Backface culling can result in performance improvements. It only renders the front of each triangle. This also allows you to visualize the interior of a room while observing it from the outside, which can be useful in some applications.
![Looking inside an interior from the outside using backside facet culling.](media/2020.1/ria_tileset_facet_culling.webp)
Front-face culling can be used in cases where the orientation of the triangles of the dataset are inverted. This depends on the dataset itself.
Bug fixLuciadRIA
RIA-3590
Bug fixLuciadRIA
RIA-3616
Bug fixLuciadRIA
RIA-3591
If you have a read-only store (without an add
, put
or
remove
), FeatureLayer.editable
now defaults to false
.
You'll also get an error if you set editable
to true
if the layer is
backed by a readonly store.
On top of that, EditController
and CreateController
now
respect FeatureLayer.editable
. These controllers will now deactivate if
you try to use them with a layer that is not editable. They will also deactivate if the layer is not visible
in the layer tree (LayerTreeNode.visibleInTree
).
Bug fixLuciadRIA
RIA-3649
TileSet3DLayer
would not include query parameters
correctly.
2021.0
New featureLuciadRIA
New featureLuciadRIA
New featureLuciadRIA
![Styling on mouse hover](media/2021.0/ria_hover_style.gif)
PaintState
parameter of paint function in the FeaturePainter
now
has
a hovered
property to indicate whether or not the feature is hovered over.
New API was also added on Map
to handle the new hover state of features:
"HoverChanged" event
: Event hook that is called when the set of objects that is being hovered over changes.Map.hoveredObjects
: set of objects which are currently displayed as "hovered".Map.hoverObjects()
: Updates the set of objects which are displayed as "hovered".Map.isHovered()
: Determine whether a particular object on a layer is displayed as "hovered".Map.clearHovered()
: Clear the current set of hovered objects.
New featureLuciadRIA
You can now draw "world-sized" icons in LuciadRIA. The size of these icons is expressed in a length unit, such as meters or feet, instead of in pixels. The icons don't have a fixed size on the screen, but grow or shrink when you zoom in and out on the map.
![Pixel sized (red) vs world sized (green) icons](media/2021.0/ria-world-sized-icons.gif)
In the illustration, the red icon has a size in pixels. It always has the same size on the screen. The green icon has a size in meters. It grows and shrinks when you zoom in and out.
You can draw world-sized icons with IconStyle.uom
. When you set it to a specific unit of measure,
the values of IconStyle.width
, IconStyle.height
,
IconStyle.offsetX
and IconStyle.offsetY
will be interpreted
in that unit of measure.
Alternatively, you can specify a length unit inside a string value for IconStyle.width
,
IconStyle.height
, IconStyle.offsetX
and IconStyle.offsetY
. For example:
const worldSizedIconStyle = {
url: "http://example.com/icon.png",
width: "50m",
height: "50m"
};
New featureLuciadRIA
TileSet3DLayer
in LuciadRIA.
These properties will be linked to feature properties of the model residing in the layer through the
idProperty
. The layer properties integrate nicely with the model properties originating
from the OGC 3D tiles data itself (the batch table properties). Layer properties take precedence over batch table
properties.
You can update the values for these properties and use their values for expression-based styling.
The layer will inform you of features coming in to view and going out of view through a callback, so you can act
on that information by either updating or erasing property values.
See the Plugging in properties from external
data sources
article for more information.
New featureLuciadRIA
You can now visually compare multiple layer sets by swiping or flickering using
SwipeController
and FlickerController
.
![SwipeController in action](media/2021.0/ria_swipe.gif)
Swiping is done by dragging a swipe line horizontally or vertically, hiding the right/bottom part of the first layer set and the left/top part of the other layer set.
![FlickerController in action](media/2021.0/ria_flicker.gif)
Flickering is done by (quickly) clicking the mouse button and toggling visibility of two or more layer sets. You can customize these controllers or use them to implement actions that swipe or flicker programmatically. These visual change detection tools work in 2D WebGL and 3D WebGL. As an illustration, you can enable the swipe or flicker controller in many of our samples with a button in the upper left corner.
ImprovementLuciadRIA
RIA-2144
TileSet3DLayer
's fading effect when switching tiles levels of detail.
This improvement aims at limiting the flickering effect that could be witnessed when quickly transitioning between LODs (quick
zoom in / out actions).
ImprovementLuciadRIA
npm install
in the root of the release.
ImprovementLuciadRIA
ExpressionFactory
: a log
expression has been added which returns
the natural logarithm of its parameter.
ImprovementLuciadRIA
RIA-3492
ImprovementLuciadRIA
KMLLayer
: if a KML file defines highlighted styles for features, these styles are now
applied when moving the mouse cursor over these features.
ImprovementLuciadRIA
KMLLayer
: the color element of an KML IconStyle (modulation color of icons) is now
supported.
ImprovementLuciadRIA
KMLCodec
: KML screen overlays are now parsed by the codec. A
"KMLScreenOverlay"
event is emitted by the KMLCodec
and the KMLModel
when a KML screen
overlay element is encountered. The event will return a KMLScreenOverlayFeature
with all the
necessary properties to visualize the KML screen overlay.
ImprovementLuciadRIA
Controller
will now fire
"Activated"
and "Deactivated"
events when
Controller.onActivate(map)
and Controller.onDeactivate(map)
are called. You can use these events to set up and clean up
UI elements or listeners related to the controller and the map.
ImprovementLuciadRIA
createGroundOverlayLayer
from @luciad/view/kml/KMLUtil
.
For more information, consult the API documentation or the "Visualize KML data" tutorial.
ImprovementLuciadRIA
KMLModel
and KMLCodec
for a
KMLFatalError
event. This event will be emitted when an error occurs during parsing
from which the KMLCodec
cannot recover.
A non-fatal parsing error will be reported in KMLFeatureProperties.errorMessages
.
If applicable, the KMLCodec
will provide a fallback value.
ImprovementLuciadRIA
KMLFeature
: the TimeStamp and TimeSpan properties of a KML feature are now accessible via
the KMLFeatureProperties
of a KMLFeature
.
ImprovementLuciadRIA
RIA-3404
@luciad/ria-sample-common
now supports loading TypeScript files.
This makes it easier for other samples to use TypeScript.
ImprovementLuciadRIA
RIA-3404
npm run transpile-to-js
to convert the
sample to JavaScript.
After running this script, you'll find a transpiled version of the sample in ./transpiled
,
relative to the sample source directory. If you also want to generate TypeScript declarations inside this directory,
you can run npm run transpile-declarations
.
More information can be found in the 'Editing, building and running the sample code' tutorial.
ImprovementLuciadRIA
AbortSignal
into
RasterTileSetModel.getImage
,
Store.query
and Store.spatialQuery
.
AbortSignal
and AbortController
are built-in in all browsers supported by LuciadRIA.
LuciadRIA will fire the "abort"
event on this
AbortSignal
when it no longer needs the requested data. For example, the data is no longer visible in the view or newer
data has already been downloaded.
class MyRasterTileSetModel {
getImage(tile, onSuccess, onError, abortSignal) {
abortSignal.addEventListener("abort", () => {
// this data is no longer relevant, abort the download
});
}
}
Note that you can pass this AbortSignal
to the standard fetch
.
You can look at the sample samples/common/store/RestStore.query()
for an example.
The most prevalent cases where promise.cancel()
were used, were with animations (
MapNavigator
and AnimationManager.putAnimation
).
Bug fixLuciadRIA
RIA-3618
Bug fixLuciadRIA
RIA-2942
UnsatisfiedLinkError
because an incompatible
sqlite version was loaded by the VM.
Bug fixLuciadRIA
RIA-3390, RIA-2355
Upgrade considerationLuciadRIA
options
in Store.query
and Store.spatialQuery
has changed.
If you're using TypeScript, make sure options
has a type of QueryOptions
, or a type that extends from it.
Upgrade considerationLuciadRIA
Controller
that fires events,
you will have to add the new "Activated"
and "Deactivated"
events to the signature of Controller.on
.
You will also have to make sure that these events are properly forwarded to the base
Controller
implementation.
Upgrade considerationLuciadRIA
Upgrade considerationLuciadRIA
RIA-3085
Upgrade considerationLuciadRIA
SelectionStyleOptions
, which is a parameter of functions on
FeaturePainterUtil
, has been renamed to StyleMutationOptions
.
This new name better reflects its usage since it is now also used in the context of hover styling. You will only
need to update your code if you explicitly used this as a type, the properties on the interface have not changed.
Upgrade considerationLuciadRIA
MapNavigator
operations are now always asynchronous.
Now, you always have to wait for the returned Promise
to resolve if you want to be sure
the map is in the correct position (even for non-animated operations).
Upgrade considerationLuciadRIA
Upgrade considerationLuciadRIA
WMSGetFeatureInfoResponse.getHeader
now returns a string
or
null
, instead of string
or undefined
.
The typings were also updated to reflect this change.
Upgrade considerationLuciadRIA
WebGLMap
now uses WebAssembly behind the scenes.
Because WebAssembly instances are instantiated asynchronously, the following API was changed:
MapNavigator.fit/pan/zoom/rotate
: You now always have to wait for the returned promise to resolve, if you want to be sure that the navigation action completed.ExpressionFactory
expressions created by this factory are now validated when they are visualized, instead of when they are created.-
Expressions set on
TileSet3DLayer.meshStyle
andTileSet3DLayer.pointCloudStyle
are now validated once the layer is added to the map, instead of when the layer is created.
WebAssembly is supported on all browsers supported by LuciadRIA.
Upgrade considerationLuciadRIA
Evented
: the options parameter has been removed from Evented.on
. This
optional parameter was unused in the LuciadRIA API.
Upgrade considerationLuciadRIA
promise.cancel()
on Promises returned by the LuciadRIA API.
As an alternative, you should now use an AbortSignal
if you want to support cancellation.
For example:
const abortController = new AbortController();
const animationPromise = AnimationManager.putAnimation(map.cameraAnimationKey, myAnimation, false,
abortController.signal);
// abort the animation after 0.5 seconds
setTimeout(() => {
abortController.abort(); // this will abort the animation, instead of animationPromise.cancel()
}, 500);
Upgrade considerationLuciadRIA
RIA-3074
@luciad/ria/util/Promise
has been removed).
If you were using this Promise, you can use the ES6 built-in Promise instead.
2020.1
2020.1.20
Bug fixLuciadRIA
RIA-3627
Polyline.move2DPoint()
and Polygon.move2DPoint()
do not change
anymore the Z-coordinate of the referenced point. It is a regression issue, introduced with changes for RIA-992 enhancement,
where point's original Z-coordinate was reset to 0.
Bug fixAdvanced GIS Engine
RIA-3624
ConstructiveGeometry
and Topology
operations
would throw errors when you pass in empty ShapeList
s or ShapeList
s
that contain empty ShapeList
s.
2020.1.19
Bug fixLuciadRIA
RIA-3555
IconStyle
: draped icons were sometimes slightly distorted when the camera was looking at the
horizon.
Bug fixLuciadRIA
RIA-3610
Icon3DStyle
: transparent parts of a mesh could get colored with the color of the object
behind
it when ambient occlusion was enabled.
Bug fixLuciadRIA
RIA-3599
Bug fixLuciadRIA
RIA-3580
Bug fixLuciadRIA
RIA-1454
FeatureLayer.filter
is updated.
Before the fix the clustering transformation was not triggered automatically.
2020.1.17
Bug fixLuciadRIA
RIA-3600
Bug fixLuciadRIA
RIA-3598
UseConcMarkSweepGC
not being supported when starting the sample
server with Java 15.
Bug fixLuciadRIA
RIA-3585
LoadEverything
strategy for layers where
the model's reference is incompatible with the map's reference, even if the layer's model implements
spatialQuery()
API.
Before the fix the defaulted LoadSpatially
strategy was throwing errors when
querying the model spatially. These errors were due to the fact that the map bounds,
referenced in a Cartesian reference for example, could not be converted to model's geo-referenced bounds.
If LoadSpatially
strategy is set explicitly on the layer then
ProgrammingError
will be thrown with an informative message.
Bug fixLuciadRIA
RIA-3592
2020.1.16
Bug fixLuciadRIA
RIA-3587
Bug fixLuciadRIA
RIA-3589
Bug fixLuciadRIA
RIA-3588
Bug fixLuciadRIA
RIA-3582
2020.1.15
ImprovementLuciadRIA
RIA-1029
FusionTileSetModel
,
HSPCTilesModel
, WFSFeatureStore
,
WMSTileSetModel
, WMTSTileSetModel
,
OGC3DTilesModel
.
Bug fixLuciadRIA
RIA-3569
Bug fixLuciadRIA
RIA-3562
IconStyle
: when only the rotation was changed when switching the style, the new rotation
would not be applied on a WebGL map.
Bug fixLuciadRIA
RIA-3554
Bug fixLuciadRIA
RIA-3539
Icon3DStyle
: previously a glTF file was required to have a material defined, this is now
no longer required, as this is also optional in the glTF specification.
Bug fixLuciadRIA
RIA-3540
2020.1.14
Bug fixLuciadRIA
RIA-3553
EditController
gets deactivated properly when the edited shape belongs to a cluster.
Before the fix the controller was frozen waiting for the feature update confirmation on the edited shape.
Bug fixLuciadRIA
RIA-3547
TileSet3DLayer
by default, while documentation stated it should not be the case.
As this has been fixed, it is possible terrain behavior changes under a TileSet3Dlayer
.
If it is not fitting, be sure to request precise offsetTerrain
at layer's construction time.
2020.1.13
ImprovementLuciadRIA
RIA-3489
GeoJsonCodec
a feature ID provider
to generate consistent IDs for features that do not contain IDs in the decoded data.
Features with consistent IDs can improve data re-loading performance on model re-queries, for example when
a layer uses LoadSpatially
loading strategy.
For more information please consult GeoJsonCodecConstructorOptions.idProvider
API.
Bug fixLuciadRIA
RIA-3537
Icon3DStyle
: for glTF 2.0 meshes the default alpha mode was not applied correctly. When the
alpha mode is not defined, the mesh will now always be opaque as defined by the specification.
Bug fixLuciadRIA
RIA-3309
Bug fixLuciadRIA
RIA-3536
Icon3DStyle
: for some glTF files the vertex colors were not applied correctly, as a result
the mesh would appear completely white.
Bug fixLuciadRIA
RIA-3526
WebSocketNotifier
in the sample code has been refactored to a
WebSocketStoreDecorator
. The WebSocketNotifier
could end up in an
endless update loop when combined with the RestStore
. The
WebSocketStoreDecorator
can prevent this by not updating the decorated
Store
when a WebSocket
message is received.
2020.1.12
Bug fixLuciadRIA
RIA-3533
Icon3DStyle
regularly.
2020.1.11
ImprovementLuciadRIA
RIA-3518
CreateController
and
EditController
in cases where the map has a relatively high number of layers that are either
non snappable or have snapping disabled.
Bug fixLuciadRIA
RIA-3520
FilterFactory.identifiers
function signature is corrected:
the second argument featureIds
is optional.
Bug fixLuciadRIA
RIA-3503
Bug fixLuciadRIA
RIA-3506
2020.1.10
ImprovementPanoramic
RIA-3392
ProjectionTarget.CLOSEST_SURFACE
and looking at the projection
from a relatively far distance.
Bug fixLuciadRIA
RIA-3501
Bug fixLuciadRIA
RIA-3244
RasterTileSetLayer
rendering. When moving the layer, or toggling
visibility of layers below the raster layer, a TypeError: self.cancelTile is not a functionerror was thrown in some cases.
Bug fixLuciadRIA
RIA-3500
Bug fixLuciadRIA
RIA-3496
Bug fixLuciadRIA
RIA-3495
ShapeList
: editing would not respect the min/max
point count set on the controller.
Bug fixLuciadRIA
RIA-3494
GeoBuffer
creation: creation would not finish when the max point count
limit was reached.
Bug fixPanoramic
RIA-3498
2020.1.09
Bug fixLuciadRIA
RIA-3490
Bug fixLuciadRIA
RIA-3487
Bug fixLuciadRIA
RIA-3484
GridLayer
: when a grid layer was set invisible, the labels would not be shown when it was
turned visible again.
2020.1.08
ImprovementLuciadRIA
RIA-3464
nodata
field.
ImprovementDefense Symbology
RIA-3450
MilSymStyle.haloColor
and MilSymStyle.haloWidth
for more information.
Bug fixLuciadRIA
RIA-3478, RIA-3479
GeoBuffer
shape that is based on a closed shape
where its points are overlapping or can be removed.
An error could be thrown or the browser could freeze in an endless loop when performing contour simplification on such shapes.
Bug fixLuciadRIA
RIA-3476
parseWellKnownText
would sometimes not parse the geographic reference parameters correctly.
Bug fixLuciadRIA
RIA-3474
WMSTileSetModel
and WMSImageModel
instances
with URLs that contain request parameters. Before this fix, the models could generate incorrect
GetMap
and GetFeatureInfo
request URLs because the implementation
assumed URLs without request parameters.
Bug fixLuciadRIA
RIA-3470
ReferenceProvider
would not parse correctly some parameters of Krovak WKT parameters.
Bug fixLuciadRIA
RIA-3468
Bug fixLuciadRIA
RIA-3467
ReferenceProvider
would not parse correctly Krovak_(North_Orientated) projections.
Bug fixDefense Symbology
RIA-3465
Bug fixDefense Symbology
RIA-3460
Bug fixPanoramic
RIA-3367
ProjectionTarget.CLOSEST_SURFACE
.
Bug fixPanoramic
RIA-3348, RIA-3430
ProjectionTarget.CLOSEST_SURFACE
,
even though they shouldn't be.
Bug fixPanoramic
RIA-3366
ProjectionTarget.CLOSEST_SURFACE
,
2020.1.06
ImprovementLuciadRIA
RIA-3458
TextStyle.draped
API.
ImprovementLuciadRIA
RIA-3454
TextStyle.occlusionMode
now allows to paint text in 3D in front of other 3D data
even if the drawn text would be normally obscured.
ImprovementLuciadRIA
RIA-3399, RIA-1252, RIA-992
Polyline
and Polygon
shapes are refactored
to improve the performance for data loading and visualization.
Decoding GeoJSON, KML and GML formats is now faster by at least 20%ShapeFactory
allows now to create Polyline
and
Polygon
shapes without creating an array of individual Point
geometries.
The example below shows a new preferred way to create a polyline or polygon.
const polyline = createPolyline(reference, [[0,0], [5,2]]);
const polygon = createPolygon(reference, [[0,0,1000], [5,2,1000], [0,4,1000]]);
ImprovementLuciadRIA
RIA-3350
ReferenceProvider
now has support for WKT and EPSG references that use the Krovak
projection. The following EPSG codes that use this projection are now supported:
- EPSG:2065
- EPSG:5221
- EPSG:5513
- EPSG:5514
- EPSG:8352
- EPSG:8353
ImprovementDefense Symbology
RIA-2053
- MIL-STD-2525b: G*G*OLAV--****X - Friendly Aviation
- MIL-STD-2525b: G*G*OLAA--****X - Friendly Airborne
- MIL-STD-2525c: G*G*OLAV--****X - Aviation
- MIL-STD-2525c: G*G*OLAA--****X - Airborne
- MIL-STD-2525d: 10002500001514010000 - Friendly Airborne/Aviation
- APP-6A: G*C*MOLAF-***** - Friendly Aviation
- APP-6A: G*C*MOLAA-***** - Friendly Airborne
- APP-6B: G*C*MOLAF-***** - Friendly Aviation
- APP-6B: G*C*MOLAA-***** - Friendly Airborne
- APP-6C: 10002500001513000000 - Airborne/Aviation Axis Of Advance
- APP-6D: 10002500001514010000 - Friendly Airborne/Aviation
ImprovementDefense Symbology
RIA-2447
- MIL-STD 2525b: 2.X.4.3.1.1 - Rectangular Target
- MIL-STD 2525c: 2.X.4.3.1.1 - Rectangular Target
- APP-6C: 10002500002306000000 - Rectangular Target
ImprovementDefense Symbology
RIA-2110
- Indicate the origin point A
- Indicate a point B on the minor radius of the first sector
- Indicate a point C on the left side of the first sector
- Indicate a point D on the right side of the first sector Note: the major radius is defined by the point (C or D) that is furthest away from B.
- Repeat steps 2, 3 and 4 for the subsequent sectors.
ImprovementDefense Symbology
RIA-2797
MilitarySymbologyPainter
and
add a style-property cornerSmoothness
with a value between 0 (no rounding) and 1 (very smooth
rounding).
ImprovementDefense Symbology
RIA-2588
- MIL-STD-2525d
- APP-6D
SymbologyNode
, the method createTemplate
was deprecated in favor of
createTemplates
because it's possible that multiple geometries are supported for a symbol.
Bug fixLuciadRIA
RIA-3457
Quaternion
and Vector3
modules.
Bug fixLuciadRIA
RIA-3455
GeoCanvas.drawText()
)
on a hardware-accelerated map, where the same text is drawn in place of requested ones.
This situation can happen when there are many draw text requests for a single geometry.
Bug fixLuciadRIA
RIA-3443
FilterFactory.sub
filter
with a negative FilterFactory.literal
value.
Bug fixDefense Symbology
RIA-3369
Bug fixPanoramic
RIA-3439
FusionPanoramaModel
did not properly pass the
credentials
and requestHeaders
constructor options
to the base PanoramaModel
.
2020.1.05
Bug fixLuciadRIA
RIA-3403
Uncaught ReferenceError
is thrown when rendering axis on a vertical
view map. This problem can occur when an application is built in the production mode with specific configuration.
Bug fixLuciadRIA
RIA-787, RIA-3405
2020.1.04
Bug fixLuciadRIA
RIA-3370
CreateController.setPointCount
were ignored when creating a military symbology feature.
Bug fixLuciadRIA
RIA-3385
geoCanvas.drawIcon3D
would cause an error and the 3D icon was not visualized.
Bug fixLuciadRIA
RIA-3364
Bug fixLuciadRIA
RIA-3374
Bug fixLuciadRIA
RIA-3398
null
to
MemoryStore
. This situation can happen when a layer uses LoadSpatially
strategy with different scale levels on a 3D map.
Bug fixLuciadRIA
RIA-3394
NotImplementedError
was thrown when right-clicking on a
shape that is being edited.
2020.1.03
ImprovementLuciadRIA
RIA-3355
FeatureModel
emits
ModelChanged
events).
Now the LoadingStrategy
does not trigger query requests when model changes and
the layer does not use ClusteringTransformer
.
ImprovementLuciadRIA
RIA-3357
ImprovementLuciadRIA
RIA-997
MemoryStore
can now be created with spatial index allowing to run spatial queries on stored features.
For more information please consult MemoryStoreConstructorOptions.spatialIndex
API.
Bug fixLuciadRIA
RIA-3365
Bug fixLuciadRIA
RIA-3363
Bug fixLuciadRIA
RIA-3358
Exception
formats are missing in the
GetCapabilities
response. Although the XML Exception
tag is
mandatory, some servers may omit it. WMSCapabilities.exceptionFormats()
will return an
empty array in that case.
Bug fixLuciadRIA
RIA-3352
GetFeatureInfo
operation is missing from GetCapabilities
response, the WMSCapabilities.operations
array no longer contains an invalid
null
entry.
2020.1.02
ImprovementLuciadRIA
RIA-3351
Bug fixLuciadRIA
RIA-3315
CreateController
when creating shapes with a limited point count (as is the case for some tactical graphics).
The controller would deactivate before it handled a SINGLE_CLICK_CONFIRMED
event.
This event would 'leak' into the default map event handling, triggering a selection on the newly created shape.
Bug fixLuciadRIA
RIA-3202
2020.1.01
ImprovementLuciadRIA
RIA-3303
HSPCTilesModelDescriptor
now exposes the data type of a property when available.
Using this information, it is possible to estimate what is the effective range of a property and style accordingly.
ImprovementLuciadRIA
RIA-3335
TileSet3DLayer
behaves in the distance.
Using the newly introduced attribute TileSet3DLayer.qualityFactorDistanceFalloff
, a multiplier over the quality factor can be applied at specified distances.
This can help in finding the balance between performances and visual quality, for instance by having a higher factor in the
foreground than in the background.
ImprovementDefense Symbology
RIA-3299
- MIL-STD-2525b: Wind Plot - WAS-WP----P----
- MIL-STD-2525c: Wind Plot - WAS-WP----P----
- APP-6A: Wind Barb - W*A*W-----*****
- APP-6B: Wind Barb - W*A*W-----*****
- APP-6C: Wind Barb - 10004500001126000000
Bug fixLuciadRIA
RIA-3320
ProgrammingError not defined
error occurs when the WMS service doesn't
have the specified layer. Now an error indicating that the layer doesn't exist in the service will be thrown.
Bug fixLuciadRIA
RIA-2825
MapNavigator.fit
) on near-worldwide bounds.
The map would fit on a location near lon-lat [0,0]
, zoomed in too much.
Now, it correctly shows the entire globe.
Bug fixLuciadRIA
RIA-3334
Bug fixLuciadRIA
RIA-3296
2020.1
New featurePanoramic
GeoCanvas.drawPanorama
in FeaturePainter.paintBody
after assigning a PanoramaModel
to FeatureLayer.panoramaModel
.
If you want to visualize panorama data processed by LuciadFusion, you should use FusionPanoramaModel
.
LuciadRIA can visualize panoramas in a cubemap image format, or in equirectangular format.
The panoramic imagery can be multileveled as well (in both formats). Please refer to the API documentation for details.
The "Panorama" sample also demonstrates how you can use the RIA panorama API.
Note that you'll need a license for the LuciadRIA "Panoramics" optional module for this API to work.
ImprovementLuciadRIA
RIA-1669
EditController
handle icons, you can still set that style using:
const editController = new EditController(layer, feature, {
handleIconStyle: {
image: IconFactory.rectangle({ // from samples/common (@luciad/ria-sample-common/IconFactory)
stroke: "rgb(0,0,0)",
strokeWidth: 1,
fill: "rgb(255,255,255)",
width: 10,
height: 10
}),
width: "10px",
height: "10px",
zOrder: 10
}
});
ImprovementLuciadRIA
FeatureLayer
using LoadingStrategy
API.
The new LoadingStrategy.refresh
property accepts the following values:
number
- the loading strategy refreshes everyn
milliseconds.Date
object - the loading strategy will refresh at that time.null
- the loading strategy never refreshes.
KMLNetworkLinkFeature
, that reloads
data according to KMLLink
object.
ImprovementLuciadRIA
HSPCTilesModelDescriptor
now exposes more information about its metadata properties.
Properties now have a role that describes their type.
It is now possible to detect if a model exposes colors or intensity for instance.
This can be useful for styling and filtering.
ImprovementLuciadRIA
RIA-2545
ImprovementLuciadRIA
RIA-1337
KMLCodec
is introduced which can be used with existing
Store
implementations. For example, you can now connect to a WFS service that returns KML using the
KMLCodec
in combination with the WFSFeatureStore
.
ImprovementLuciadRIA
- Placemark items
- Network links
- Container elements
- Ground overlays
- KMZ data can now be parsed.
KMLCodec
and KMLModel
.
A KML sample was also added to demonstrate how the new API can be used to create a tree view UI component.
See also the how-to article on visualization of KML data.
ImprovementLuciadRIA
RIA-3265
ImprovementLuciadRIA
RIA-3099
RasterTileSetModel
. This may come in
handy if you have to pass the tile bounds in tile requests.
ImprovementLuciadRIA
FeaturePainter
implements the Evented
interface and
exposes the "Invalidate"
, "InvalidateById"
and "InvalidateAll"
events that are emitted when corresponding invalidation methods are called.
ImprovementLuciadRIA
You can now have transparent objects in a TileSet3DLayer
, for example based on an OGC 3D Tiles mesh dataset.
The transparency can originate from transparent pixels in an rgba texture, transparent colors in a vertex attribute, or transparent
colors from a color expression.
Since painting with transparency can have a performance impact, it is disabled by default.
You can enable it with the new flag transparency
on TileSet3DLayer
.
When disabled, any transparent surfaces will just be opaque.
ImprovementLuciadRIA
RIA-1370
LoadingStrategy.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.
This API is extended now to include the LoadEverything
strategy too.
Please note that LoadSpatially
already exposes this API since releases 2018.1.
ImprovementLuciadRIA
RasterStyle.displacementExpression
on the RasterTileSetLayer.rasterStyle
of an elevation layer. This can for example be used
to flatten the terrain in an area where you want to place a 3D mesh of a building.
ImprovementLuciadRIA
TileSet3DLayer
by using
TileSet3DLayer.outlineStyle
.
Additionally it is now also possible to make your TileSet3DLayer
visible when it is obscured
by another layer, for example underground pipes beneath another mesh. To enable this you need to set an
OcclusionStyle
via TileSet3DLayer.occlusionStyle
. With
OcclusionStyle.bodyColorExpression
you can control the color of the occluded part of the layer. An outline can also be configured for the
occluded part of the layer using OcclusionStyle.outlineStyle
.
![Building in a 3D tiles layer with an outline and occlusion style.](media/2020.1/ria_occlusion_outline_style.png)
ImprovementLuciadRIA
RIA-3209
Decoration.alignment
property. The property accepts
now only expected string literals: "left", "center" or "right".
ImprovementLuciadRIA
Icon3DStyle
now accepts both glTF version 1.0 and 2.0. Additionally it's now
possible to use binary glTF as well.
ImprovementLuciadRIA
PointLabelPosition.SOUTH
for labels drawn on the bottom borderPointLabelPosition.WEST
for labels drawn on the left border
ImprovementLuciadRIA
Cartesian references which can be created with
ReferenceProvider.createCartesianReference
can now be used as the world reference on a WebGLMap
. This allows you to visualize
non-georeferenced data on a WebGLMap, e.g. timeline, image defined in CRS:1, etc.
The use of a WebGLMap
with a Cartesian reference is demonstrated in the timeline, vertical
view and image viewer sample.
A WebGLMap
with a Cartesian reference has the following limitations:
- For raster data the reference of the data and the map must be equal, e.g. both must use CRS:1.
- World sized styling is not supported.
![Timeline on a WebGLMap with a Cartesian reference](media/2020.1/ria_webgl_cartesian_timeline.png)
ImprovementLuciadRIA
RIA-3114
Feature.properties
is
FeatureProperties
instead of object
.
Now it's no longer needed to cast Feature.properties
to a specific type in order to prevent
typing issues when accessing an arbitrary property.
ImprovementLuciadRIA
GraphicsEffects
was enhanced. The atmosphere can now more accurately
visualize time of day.
See LightScatteringAtmosphere
for more details.
ImprovementLuciadRIA
RIA-3100
model
accessor of RasterTileSetLayer
is now more precisely typed with
RasterTileSetModel | null
instead of Model | null
.
ImprovementLuciadRIA
Bug fixLuciadRIA
BasicFeaturePainter.setStyle
and
BasicFeaturePainter.getStyle
. It no longer takes a complete PaintState
object,
but rather just an object literal with a selected
property (no need to specify a level, which
isn't used by BasicFeaturePainter
).
Bug fixLuciadRIA
RIA-3115
Bug fixLuciadRIA
RIA-2968
WebGLMap
.
This is particularly noticeable when regularly updating thousands of track positions.
Such scenarios had regressed compared to LuciadRIA 2019 and LuciadRIA 2018.
Now its performance has improved by up to 50% compared to previous releases.
Bug fixLuciadRIA
RIA-3121
ContextMenuManager
in the samples now only consumes click events on the
document.body
node when the context menu is being displayed.
This makes the ContextMenuManager
compatible with UI frameworks like React. Before this
change, React components would not respond to click events.
Bug fixDefense Symbology
RIA-3230
Upgrade considerationLuciadRIA
HSPCTilesModelDescriptor
now exposes the properties as an object.
Before 2020.1, they were exposed as an array of strings encoding their names.
The format is now aligned on the one given in the OGC3DTilesModelDescriptor
.
If you were reading the property array, you will need to change the logic to loop on the members of this new object.
Upgrade considerationLuciadRIA
KMLLayer.painter
now respects the visibility
flag when
drawing KML features.
Prior to 2020.1 release, KML features were always visible disregarding the visibility
.
The previous behavior can be restored by forcing the visibility
value to "true".
layer.workingSet.on("QueryFinished", () => { layer.workingSet.get().forEach(kmlFeature => kmlFeature.properties.visibility = true); layer.painter.invalidateAll(); });An alternative solution is to create a user interface to control visibility of KML features. The "KML" sample demonstrates how to create such a UI component.
Upgrade considerationLuciadRIA
Codec.decode
can now also return a Promise<Cursor>
. If you are
using this you will need to do a type check first.
Upgrade considerationLuciadRIA
RasterStyle
interface was moved to its own module. Since this is a type only import,
only TypeScript projects are affected by this change. In your TypeScript code you will need to update the import
to
import {RasterStyle} from "@luciad/ria/view/style/RasterStyle"
Upgrade considerationLuciadRIA
Upgrade considerationLuciadRIA
Promise<number> | Promise<string>
in their return type,
now return Promise<number | string>
. As a result you might need to change
some casting in your TypeScript code. This change affects functions on
WorkingSet
and FeatureModel
.
Upgrade considerationLuciadRIA
function SubClass() { SuperClass.call(this, arg1, arg2); this._field = arg1; } SubClass.prototype = Object.create(SuperClass.prototype); SubClass.prototype.constructor = SubClass;
You'll have to change the implementation of the constructor, like this:
function SubClass() { var _this = Reflect.construct(SuperClass, [arg1, arg2], this.constructor); _this._field = arg1; return _this; } SubClass.prototype = Object.create(SuperClass.prototype); SubClass.prototype.constructor = SubClass;
Note that Reflect.construct is not available on Internet Explorer. If you're targeting Internet Explorer, you will have to make sure that a polyfill for Reflect.construct is available.
If you're using ES6 classes, no changes are necessary.
Upgrade considerationLuciadRIA
LayerTreeVisitor
has been converted to an interface, thus you can no longer extend from it.
The default implementation had no functional use, thus removing the inheritance from your code does not change any
functionality.
2020.0
2020.0.19
Bug fixLuciadRIA
RIA-3277
WebGLMap
maps in a single application.
Bug fixLuciadRIA
RIA-3274
GoogleLayer
would start flickering when zooming in on areas where
no imagery is available at high zoom levels.
Bug fixLuciadRIA
RIA-3273
MapNavigator
. Also, adding a RasterTileSetLayer
to a
map
with scale snapping enabled will now work.
Bug fixLuciadRIA
RIA-3267
Bug fixLuciadRIA
RIA-3258
altitudeMode
element set to
relativeToGround
was drawn on the surface of the ground.
This situation happened when the lowest Z-coordinate of all shape's points was equal to 0.
2020.0.18
ImprovementLuciadRIA
RIA-3256
LonLatPointFormat
format
method would not be taken into account.
Bug fixLuciadRIA
RIA-3247
2020.0.17
Bug fixLuciadRIA
RIA-3238
2020.0.15
ImprovementLuciadRIA
GARSPointFormat
to convert points with WGS84 lon lat coordinates into GARS coordinate strings and the other way around.
ImprovementLuciadRIA
RIA-2426
MGRSPointFormat
now supports parsing MGRS coordinates into points with WGS84 lon lat coordinates.
ImprovementLuciadRIA
RIA-3227
Bug fixLuciadRIA
RIA-3239
Bug fixLuciadRIA
RIA-3221
2020.0.14
ImprovementLuciadRIA
RIA-3193
TileMatrixSet
when WMTSTileSetModel
was created with a tile matrix set which is not entirely quad-tree.
Bug fixLuciadRIA
RIA-3226
Bug fixLuciadRIA
RIA-3211
Bug fixLuciadRIA
RIA-3210
PatternFactory.icon
),
where the IconPatternOptions.credentials
property was disregarded.
Bug fixLuciadRIA
RIA-2487
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.
2020.0.12
ImprovementLuciadRIA
Bug fixLuciadRIA
RIA-3101
OnPathLabelRepeatOptions.minimumGap
option was disregarded.
Bug fixLuciadRIA
RIA-3201
canAddChild
method in the LayerTree
class
has been revised, the type of the positionReference
parameter has been changed to
LayerTreeNode
.
Bug fixLuciadRIA
RIA-3178
WMSTileSetModel.getTileURL
.
The return type did not include null
.
Bug fixLuciadRIA
RIA-3184
requestHeaders
in various places of the API.
The type definition did not include null
.
Bug fixLuciadRIA
RIA-3172
WebGLMap
s 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
Map.viewToMapTransformation
. This getter is shorthand
for getViewTransformation(LocationMode.TERRAIN)
, not
getViewToMapTransformation(LocationMode.CLOSEST_SURFACE)
.
Bug fixLuciadRIA
RIA-3169
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
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
PerspectiveCamera.copyAndSet
only took into account the
options.eye
argument if it had a different reference from the camera.
Bug fixLuciadRIA
RIA-3110
Bug fixLuciadRIA
RIA-2984
Bug fixDefense Symbology
RIA-3200
2020.0.11
Bug fixDefense Symbology
RIA-3181
2020.0.10
Bug fixDefense Symbology
RIA-3177
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
ImprovementLuciadRIA
RIA-3128
Bug fixLuciadRIA
RIA-3165
Bug fixLuciadRIA
RIA-3162
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
ImageIconStyle
could be incorrectly used in some situations.
Bug fixLuciadRIA
RIA-3156
2020.0.07
ImprovementLuciadRIA
RIA-3061
TileSet3DLayer
's model to OGC3DTilesModel | HSPCTilesModel
instead of the generic Model
.
ImprovementLuciadRIA
RIA-3117
ReferenceProvider.createCartesianReference
options called CreateCartesianReferenceOptions
.
Bug fixLuciadRIA
RIA-3127
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
2020.0.06
ImprovementLuciadRIA
RIA-3105
ImprovementLuciadRIA
RIA-3102
Bug fixLuciadRIA
RIA-3111
referenceName
property in WMTSCapabilitiesTileMatrixSet
that was
accidentally deleted in version 2020.0 has been added again.
Bug fixLuciadRIA
RIA-3090
2020.0.05
ImprovementLuciadRIA
Layer.getModelBoundsVisibleOnMap
. Instead, Map.mapBounds
should
be used.
Bug fixLuciadRIA
RIA-3075
TileSet3DLayer
where Layer.getModelBoundsVisibleOnMap
would always return null.
2020.0.04
ImprovementLuciadRIA
RIA-3093
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
Bug fixLuciadRIA
RIA-3098
ContactInfo
values
were empty in the GetCapabilities response.
Bug fixLuciadRIA
RIA-3088
TileSet3DLayer
: errors could occur when setting an expression on layers with a
geo-location transformation.
Bug fixLuciadRIA
RIA-3087
Point.move3D
would not move the point's z coordinate if the z argument === 0.
Bug fixLuciadRIA
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
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
SEPainterFactory
throws errors if the symbology encoding data
contains a filter definition of type and
or or
.
Bug fixLuciadRIA
RIA-3067
Affine3DTransformation
's createIdentityTransformation
are no longer mandatory.
2020.0.02
Bug fixLuciadRIA
RIA-3073
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
ImprovementLuciadRIA
RIA-3017
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
userDefinedSymbolization
property of the WMSCapabilities
class for more information.
ImprovementLuciadRIA
RIA-2992
Bug fixLuciadRIA
RIA-3056
WFSFeatureStore.createFromCapability
's error handling. An undefined
variable error was thrown instead of the intended error.
Bug fixLuciadRIA
RIA-3052
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
children
property. The polyfill was used for no longer supported
browser Internet Explorer 9.
Bug fixLuciadRIA
RIA-2999
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
Bug fixLuciadRIA
RIA-3018
drawText
for many features that update regularly.
Bug fixLuciadRIA
RIA-2962
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
Bug fixLuciadRIA
RIA-2920
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](media/2020.0/ria_npm_install_movie.gif)
npm install
to install LuciadRIA packages
The packages include Typescript definition files with documentation for all the public API.
ImprovementLuciadRIA
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
License.loadLicenseFromUrls
API.
ImprovementLuciadRIA
RIA-2908
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
ImprovementLuciadRIA
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
TileSet3DLayer
s 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
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
LightEffect
for more details.
ImprovementLuciadRIA
HSPCTilesModel
to create a model, and visualize the result of that using TileSet3DLayer
.
ImprovementLuciadRIA
- 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 thepackages
folder. AMD classes can be found in thepackages/amd
folder and ES6 classes can be found in thepackages/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
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
RIA-2904
ImprovementLuciadRIA
RIA-2898
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
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
RIA-2149
ImprovementLuciadRIA
RIA-2699
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
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.
IconStyle.occlusionMode
or ShapeStyle.occlusionMode
for details
and limitations.
ImprovementLuciadRIA
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
RIA-1809
ParameterizedPointPainter
now supports labels.
To do so, implement paintLabel
in your painter in the same way as for other
FeaturePainter
s.
Note that the labels are evaluated and drawn using the normal cpu-based algorithms.
ImprovementLuciadRIA
Affine3DTransformation
.
ImprovementLuciadRIA
RIA-2473
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
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
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
RIA-1516
WFSFeatureStore
auto-detects the Codec
object to use based on constructor's outputFormat
property if codec
is not provided.
ImprovementLuciadRIA
Affine3DTransformation
to the API. This transformation encapsulates an affine
transformation that can be used
to position, scale and rotate a TileSet3DLayer
.
ImprovementLuciadRIA
map.effects.antiAliasing
.
ImprovementLuciadRIA
map.effects.eyeDomeLighting
and
luciad/view/EyeDomeLightingEffect
.
See also the section "Configuring WebGL Map effects" in the LuciadRIA Developer's Guide.
ImprovementLuciadRIA
TileSet3DLayer
s 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.
ImprovementLuciadRIA
RIA-2783
ImprovementLuciadRIA
RIA-2745
TileSet3DLayer
have their alpha
disregarded (no transparency possible).
ImprovementLuciadRIA
RIA-2776
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
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.
ImprovementLuciadRIA
RIA-2762
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.
ImprovementLuciadRIA
RIA-2758
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 Map
s, but now it is also the case for
WebGLMap
.
ImprovementLuciadRIA
RIA-2724
ImprovementLuciadRIA
RIA-2738
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
ImprovementLuciadRIA
WMTSTileSetModel
API.
Previously the WMTSTileSetModel
module was a sample code and now it is exposed in the API.
ImprovementLuciadRIA
- The painter supports the following elements for
TextSymbolizer
:IsAligned
,IsRepeated
,Gap
,InitialGap
,PerpendicularOffset
. - It now supports
Rotation
,AnchorPoint
andOpacity
forGraphic
elements. - Support for
GraphicStroke
elements has been added. - The painter can handle the
uom
attribute fromLineSymbolizer
andPolygonSymbolizer
elements to draw lines in world size units. - It now supports
Mark
,Size
,Rotation
andOpacity
forGraphic
elements used in aGraphicFill
element. - Added support for the SVG format, SVG images can now be used with both
InlineContent
andOnlineResource
elements.
ImprovementLuciadRIA
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
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
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 (seeWebGLMap.maxMemoryUsageHint
, and other release note below), resulting in caching that adapts to the dataset, as well as avoiding crashes.
ImprovementLuciadRIA
ImprovementLuciadRIA
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
FillStyle
.
ImprovementLuciadRIA
MapNavigator.constraints
.
Consult the JSdoc of MapNavigatorConstraints
for more information.
ImprovementLuciadRIA
Camera
API to manipulate the map's camera. Consult the JSdoc of the
luciad.view.camera
package, and
Map.camera
for more information.
ImprovementLuciadRIA
WebGLMap
s.
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
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
ImprovementLuciadRIA
RIA-2511
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
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
ImprovementLuciadRIA
RIA-2341
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
IconStyle.opacity
property.
ImprovementLuciadRIA
RIA-2499
ImprovementLuciadRIA
RIA-2498
ImprovementLuciadRIA
RIA-2496
ImprovementLuciadRIA
Map.effects
, GraphicEffects.ambientOcclusion
and
GraphicEffects.depthOfField
for details.
When enabled, they are applied on all the data on the map.
ImprovementLuciadRIA
TileSet3DLayer
s 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
Map.globeColor
.
ImprovementLuciadRIA
RIA-2490
AirspaceStyle.zOrder
property.
ImprovementLuciadRIA
RIA-2486
ImprovementLuciadRIA
IconStyle
and
FillStyle
.
ImprovementLuciadRIA
RIA-2235
requestHeaders
and
credentials
properties on UrlTileSetModel
, WMSImageModel
,
GoogleImageModel
, UrlStore
,
WFSFeatureStore
and OGC3DTilesModel
. For more information, consult the JSdoc.
ImprovementLuciadRIA
OnPathLabelStyle.repeat
),
- place labels away from a line (OnPathLabelStyle.perpendicularOffset
)
ImprovementLuciadRIA
RIA-2451
BasicCreateController
does not support creation of complex polygons, shape
lists and extruded shapes.
Also introduced runtime checks for these cases.
ImprovementLuciadRIA
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
ImprovementLuciadRIA
RIA-2276
MapNavigator.fit
now does tighter fits on large geodetic bounds in 3D.
ImprovementLuciadRIA
RIA-2307
ImprovementLuciadRIA
RIA-2410
ImprovementLuciadRIA
RIA-2148
ImprovementLuciadRIA
WebGLMap
. For more information, see the JSdoc
for
FillStyle.image
and FillStyle.url
.
ImprovementLuciadRIA
RIA-2208
ImprovementLuciadRIA
RIA-2143
ImprovementLuciadRIA
RIA-2328
ImprovementLuciadRIA
RIA-2287
ImprovementLuciadRIA
RIA-2255
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
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
ImprovementLuciadRIA
luciad/view/style/complexstroke
, most
notably
ComplexStrokedLineStyle
and PatternFactory
.
ImprovementLuciadRIA
RIA-2299
ImprovementLuciadRIA
RIA-2296
WebGLMap
. For more information, see the
JSdoc for
LineStyle.beginMarker
and LineStyle.endMarker
.
ImprovementLuciadRIA
RIA-2281
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
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
EditController.setPointCount
.
ImprovementLuciadRIA
RIA-2251
ImprovementLuciadRIA
RIA-2241
ImprovementLuciadRIA
RIA-2115
whenReady
promise is resolved a soon as QueryStatus.QUERY_ERROR
is
reported for the underlying feature layer.
ImprovementLuciadRIA
RIA-2158
ImprovementLuciadRIA
RIA-2141
ImprovementLuciadRIA
RIA-1026
ImprovementLuciadRIA
RIA-2139
ImprovementLuciadRIA
RIA-2065
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
FeatureLayer
s with
LayerType
DYNAMIC
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
ImprovementLuciadRIA
RIA-2081
ImprovementLuciadRIA
RIA-1086
GeoCanvas#drawText
is now also supported by WebGL maps
ImprovementLuciadRIA
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
Geodesy.calculate3D
method to calculate a distance in a 3D Cartesian space.
ImprovementLuciadRIA
ImprovementLuciadRIA
RIA-111
luciad/shape/Point
is no longer a subtype of Array
ImprovementLuciadRIA
RIA-2319
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
starfield
effect to false
.
See GraphicsEffects.starfield
or Map.effects
for more details.
ImprovementLuciadRIA
RIA-2011
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
ImprovementLuciadRIA
RIA-1312
ImprovementLuciadRIA
ImprovementLuciadRIA
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
- 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
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
IconStyle
in a
WebGLMap
.
If the image was already loaded, it wasn't applied to the icon.
ImprovementLuciadRIA
RIA-1795
ExpressionFactory.map
to support a larger number of icons.
This makes it easier to create icon animations using the ParameterizedPointPainter
.
ImprovementLuciadRIA
InPathLabelStyle.inView
property
to false
.
ImprovementLuciadRIA
RIA-1743
{node: { fs: 'empty' }}
flag in order to
make packing work with WebGLMap
s.
ImprovementLuciadRIA
ImprovementLuciadRIA
RIA-278
Controller
s 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
map
property
ImprovementLuciadRIA
RIA-163
ImprovementLuciadRIA
RIA-1583
ImprovementLuciadRIA
RIA-1863
Position
parameter of LayerGroup#MoveChild()
is now optional and
defaults to "top" when not present
ImprovementLuciadRIA
RIA-1863
Position
parameter of LayerGroup#MoveChild()
is now optional and
defaults to "top" when not present
ImprovementLuciadRIA
RIA-1830
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
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
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
ImprovementLuciadRIA
RIA-1770
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
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 and
WFSFeatureStorenow accept new optional constructor
parameters
withCredentialsand
requestHeaders`.
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
{-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
getTileURL()
method from UrlTileSetModel
now replaces all
occurrences of {x}
, {y}
and {z}
in the
base URL instead of only the first occurrence.
ImprovementLuciadRIA
luciad/util/License
for more information on how to use the API.
ImprovementLuciadRIA
ImprovementLuciadRIA
RIA-1717
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
ImprovementLuciadRIA
RIA-1746
ImprovementLuciadRIA
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
QueryError
event is emitted on the WorkingSet
whenever an error
occurs while processing a Cursor
.
ImprovementLuciadRIA
RIA-1716
ImprovementLuciadRIA
RIA-523
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
map.effects.atmosphere
to false.
For more information, read the JSdoc of GraphicsEffects.atmosphere
.
ImprovementLuciadRIA
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
ImprovementLuciadRIA
RIA-1701
ImprovementLuciadRIA
RIA-1697
area
method on
Geodesy
.
ImprovementLuciadRIA
RIA-965, RIA-1663
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
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
ImprovementLuciadRIA
RIA-1589
ImprovementLuciadRIA
RIA-1586
ImprovementLuciadRIA
FilterFactory
documentation for
details.
ImprovementLuciadRIA
RIA-1617
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
ImprovementLuciadRIA
RIA-1572
map.destroy()
on a non-WebGLMap.
ImprovementLuciadRIA
MapNavigator.defaults.snapToScaleLevels
)
is disabled.
ImprovementLuciadRIA
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
ImprovementLuciadRIA
RIA-1029
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
new Image()
instances with
document.createElement('img')
.
ImprovementLuciadRIA
RIA-1447, RIA-1317
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
ImprovementLuciadRIA
RIA-1547
ClusteringTransformer
: the performance of the clustering algorithm has been improved.
ImprovementLuciadRIA
RIA-69
ImprovementLuciadRIA
RIA-1172
ImprovementLuciadRIA
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
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
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
ImprovementLuciadRIA
ImprovementLuciadRIA
ImprovementLuciadRIA
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.
ImprovementLuciadRIA
ImprovementLuciadRIA
- a light based on your camera (this is the default)
- a sun light based on a specific time
- no lighting
ImprovementLuciadRIA
RIA-1348
ImprovementLuciadRIA
RIA-1367
ImprovementLuciadRIA
ImprovementLuciadRIA
ImprovementLuciadRIA
ImprovementLuciadRIA
RIA-1369, RIA-789
ImprovementLuciadRIA
ImprovementLuciadRIA
RIA-1315
ImprovementLuciadRIA
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
ReferenceProvider
documentation for more details, or the Geodetic
References
chapter
of the Developer's Guide.
ImprovementLuciadRIA
ImprovementLuciadRIA
RIA-1324
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
ImprovementLuciadRIA
RIA-936
ImprovementLuciadRIA
RIA-1271
ImprovementLuciadRIA
RIA-1262
ImprovementLuciadRIA
RIA-897
- 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
ImprovementLuciadRIA
RIA-988
LonLatGrid
constructor now provide a grid that adjust to your
zoom level.
Previously you had to specify this switch behavior yourself.
ImprovementLuciadRIA
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
ImprovementLuciadRIA
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
luciad.reference.ReferenceProvider
getHeightAboveTerrainReference
function documentation for more details.
ImprovementLuciadRIA
RIA-933
ImprovementLuciadRIA
ImprovementLuciadRIA
ImprovementLuciadRIA
ImprovementLuciadRIA
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
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
ImprovementLuciadRIA
RIA-889
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
ImprovementLuciadRIA
RIA-876
ShapeList
, using the handle to translate a sub-shape will also translate all
the other sub-shapes.
ImprovementLuciadRIA
- 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
shortestDistanceToLine
method on Geodesy
.
ImprovementLuciadRIA
ImprovementLuciadRIA
RIA-774
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
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
ImprovementLuciadRIA
ReferenceProvider.getReference()
.
See ReferenceProvider.parseWellKnownText
for more details
ImprovementLuciadRIA
RIA-747
ImprovementLuciadRIA
ImprovementLuciadRIA
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
ReferenceProvider
.
ImprovementLuciadRIA
luciad.shape.format.MGRSPointFormat
.
ImprovementLuciadRIA
ImprovementLuciadRIA
RIA-644
ImprovementLuciadRIA
RIA-613
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
ImprovementLuciadRIA
RIA-554
ImprovementLuciadRIA
RIA-255
Create and Edit
sample. See also
documentation of CreateController
or EditController.
ImprovementLuciadRIA
RIA-550
pick position
.
ImprovementLuciadRIA
RIA-541
ImprovementLuciadRIA
RIA-547
ImprovementLuciadRIA
RIA-481
ImprovementLuciadRIA
ImprovementLuciadRIA
RIA-471
WMSTileSetModel
or the WMSImageModel
may be configured with a bounds expressed in coordinates of the CRS:84
reference.
ImprovementLuciadRIA
ImprovementLuciadRIA
ImprovementLuciadRIA
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.
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
ImprovementLuciadRIA
RIA-473
ImprovementLuciadRIA
RIA-459
ImprovementLuciadRIA
RIA-406
ImprovementLuciadRIA
RIA-441
ImprovementLuciadRIA
RIA-433
ImprovementLuciadRIA
ImprovementLuciadRIA
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
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
ImprovementLuciadRIA
RIA-398
ImprovementLuciadRIA
RIA-403
ImprovementLuciadRIA
RIA-391
ImprovementLuciadRIA
RIA-279
ImprovementLuciadRIA
RIA-54
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
ImprovementLuciadRIA
ImprovementLuciadRIA
ImprovementLuciadRIA
RIA-378
ImprovementLuciadRIA
RIA-348
ImprovementLuciadRIA
RIA-62
ImprovementLuciadRIA
RIA-100
luciad/view/Map#selectObjects()
now allows adding and removing objects to and from the
current selection.
ImprovementLuciadRIA
RIA-305
ImprovementLuciadRIA
RIA-89
ImprovementLuciadRIA
RIA-347
ImprovementLuciadRIA
RIA-267
ImprovementLuciadRIA
ImprovementLuciadRIA
addSelection()
method on FeaturePainterUtil
.
ImprovementLuciadRIA
ImprovementLuciadRIA
ImprovementLuciadRIA
RIA-313
ReferenceProvider
.
ImprovementLuciadRIA
RIA-312
ImprovementLuciadRIA
ImprovementLuciadRIA
RIA-127
ImprovementLuciadRIA
RIA-254
ImprovementLuciadRIA
ImprovementLuciadRIA
ImprovementLuciadRIA
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
WorkingSet
will be visualized. This filter can be a simple
javascript function or
an OGC filter created with luciad.ogc.filter.FilterFactory.
ImprovementLuciadRIA
ImprovementLuciadRIA
ImprovementLuciadRIA
RIA-275
ImprovementLuciadRIA
RIA-273
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
dash
and dashOffset
properties in luciad/view/style/LineStyle
.
ImprovementLuciadRIA
RIA-224
ImprovementLuciadRIA
ImprovementLuciadRIA
RIA-108
- 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
ImprovementLuciadRIA
RIA-208
ImprovementLuciadRIA
ImprovementLuciadRIA
RIA-169
ImprovementLuciadRIA
ImprovementLuciadRIA
RIA-113
ImprovementLuciadRIA
RIA-101
ImprovementLuciadRIA
RIA-209
ImprovementLuciadRIA
RIA-173
ImprovementLuciadRIA
RIA-206
ImprovementLuciadRIA
ImprovementLuciadRIA
ImprovementLuciadRIA
ImprovementLuciadRIA
RIA-172
ImprovementLuciadRIA
ImprovementLuciadRIA
RIA-174
ImprovementLuciadRIA
RIA-68
samples/resources/jetty-logging.properties
.
ImprovementLuciadRIA
luciad/view/style/GeoCanvas
.
ImprovementLuciadRIA
ImprovementLuciadRIA
luciad/view/feature/FeaturePainter
.
See the "Labeling sample" for a demonstration of the new functionality.
ImprovementLuciadRIA
ImprovementLuciadRIA
ImprovementLuciadRIA
RIA-4
ImprovementLuciadRIA
RIA-106
ImprovementLuciadRIA
RIA-98
ImprovementLuciadRIA
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 Symbology
ImprovementDefense Symbology
RIA-2196
luciad/symbology/military/<SymbologyName>
as a module, instead of through the SymbologyProvider.
Loading a symbology with the SymbologyProvider has been deprecated.
ImprovementDefense Symbology
RIA-1815
ImprovementDefense Symbology
RIA-920
luciad/symbology/military/MilitarySymbol#possibleValues
method
to obtain the available affiliation values for a specific symbol.
ImprovementDefense Symbology
RIA-1050
ImprovementDefense Symbology
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 Symbology
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 Symbology
RIA-1328
ImprovementDefense Symbology
RIA-578
ImprovementDefense Symbology
RIA-950
ImprovementDefense Symbology
ImprovementDefense Symbology
ImprovementDefense Symbology
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 Symbology
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
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-2976
WMSTileSetModel
in a WebMercator reference
resulted in missing terrain data near the dateline.
Bug fixLuciadRIA
RIA-2951
Bug fixLuciadRIA
RIA-2963
Bug fixLuciadRIA
RIA-2929, RIA-2970
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
Bug fixLuciadRIA
RIA-2919
endPosition
set to PinEndPosition.MIDDLE_BORDER
.
Before, the label pins were showing up and disappearing erratically when labels were repainted.
Bug fixLuciadRIA
RIA-2930
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
TileSet3DLayer
, combined with the
offsetTerrain
flag.
Bug fixLuciadRIA
RIA-2909
window
variable in MapLoader
in the samples.
Bug fixLuciadRIA
RIA-2892
WMTSTileSetModel
.
Bug fixLuciadRIA
RIA-2889
Bug fixLuciadRIA
RIA-2884
LinearRing
, LineString
or LineStringSegment
geometry is defined with gml:pos
elements.
Bug fixLuciadRIA
RIA-2700
Bug fixLuciadRIA
RIA-2837
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
QueryProvider.QUERY_NONE
.
Bug fixLuciadRIA
RIA-2814
Bug fixLuciadRIA
RIA-2300
Bug fixLuciadRIA
RIA-2811
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
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
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
Bug fixLuciadRIA
RIA-2788
Bug fixLuciadRIA
RIA-2777
GMLCodec
decodes now the gml:MultiPoint
geometry to a LuciadRIA ShapeList containing Points.
Bug fixLuciadRIA
RIA-2782
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
Bug fixLuciadRIA
RIA-2705
Bug fixLuciadRIA
RIA-2250
Bug fixLuciadRIA
RIA-2771
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
FeatureLayer
on a WebGLMap
, even if
empty.
This effect is noticeable when adding many (100+) layers on your map.
Bug fixLuciadRIA
RIA-2769
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
Bug fixLuciadRIA
RIA-2577
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
Bug fixLuciadRIA
RIA-2620
Bug fixLuciadRIA
RIA-2747
wildCard
and escapeChar
attributes
of the OGC is like
filter
(created by FilterFactory.like
API) in WFS requests.
Bug fixLuciadRIA
RIA-2739
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
TransformationFactory.createTransformation
threw an error
Bug fixLuciadRIA
RIA-1435
Bug fixLuciadRIA
RIA-2696
LayerTreeNode
subclasses with invalid
arguments.
Bug fixLuciadRIA
RIA-1718
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
Bug fixLuciadRIA
RIA-1399, RIA-1637, RIA-2530
Bug fixLuciadRIA
RIA-2692
Bug fixLuciadRIA
RIA-2458
Bug fixLuciadRIA
RIA-2479
ArcPattern
, was drawn as a circle arc.
Bug fixLuciadRIA
RIA-2523
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
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
Bug fixLuciadRIA
RIA-2601
Bug fixLuciadRIA
Bug fixLuciadRIA
RIA-2612
WebGLMap
resulted in a black screen when using an Intel HD GPU on a
4K monitor on Chrome.
Bug fixLuciadRIA
RIA-2590
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
Bug fixLuciadRIA
RIA-2573
distance3D
method.
Bug fixLuciadRIA
RIA-2572
Bug fixLuciadRIA
RIA-2571
TileSetAttributionProvider#getAttributionStrings
being mentioned as
TileSetAttributionProvider#getAttributionString
in the Typescript def, making it impossible to use that method when using Typescript
Bug fixLuciadRIA
WebGLMap
s using right mouse drag didn't work
well
Bug fixLuciadRIA
RIA-2481
Bug fixLuciadRIA
RIA-2533
Bug fixLuciadRIA
RIA-2532
Bug fixLuciadRIA
RIA-2527
Bug fixLuciadRIA
RIA-2529
FeaturePainterUtil
to apply selection on lines with complex stroke style.
Bug fixLuciadRIA
RIA-1636, RIA-1411
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
Bug fixLuciadRIA
RIA-2513
BasicCreateController.onObjectCreated
. It did not
indicate that it might
return a Promise<Boolean>
as well as a Boolean
.
Bug fixLuciadRIA
RIA-2505
Bug fixLuciadRIA
RIA-1602
Bug fixLuciadRIA
RIA-2482
Bug fixLuciadRIA
RIA-2483
AirspaceShapeProvider
returned a faulty result when the trajectory
ended on the border
of an airspace
Bug fixLuciadRIA
Bug fixLuciadRIA
RIA-1602
Bug fixLuciadRIA
RIA-2469
ShapeProvider
when FeatureLayer
is removed from
a map.
Bug fixLuciadRIA
RIA-2261
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
WebGLMap
.
This issue was a regression, introduced by improvement RIA-2276.
Bug fixLuciadRIA
RIA-2471
Bug fixLuciadRIA
RIA-2463
LoadSpatially
strategy on 3D maps with multiple scale levels.
Bug fixLuciadRIA
RIA-2337
Bug fixLuciadRIA
RIA-2440
Bug fixLuciadRIA
RIA-2455
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
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
Bug fixLuciadRIA
RIA-2444
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
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
geoCanvas.drawText
overlap each
other.
Bug fixLuciadRIA
RIA-2427
Bug fixLuciadRIA
RIA-2428
Bug fixLuciadRIA
RIA-2226
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
Bug fixLuciadRIA
RIA-2416
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
Bug fixLuciadRIA
RIA-2314
Bug fixLuciadRIA
RIA-2363
line
and fill
properties.
Bug fixLuciadRIA
RIA-2292
Bug fixLuciadRIA
RIA-2413
Bug fixLuciadRIA
RIA-2315
Bug fixLuciadRIA
RIA-2310
Bug fixLuciadRIA
RIA-2370
Bug fixLuciadRIA
RIA-2352
Bug fixLuciadRIA
RIA-2349
Bug fixLuciadRIA
RIA-2335
Bug fixLuciadRIA
RIA-2302
Bug fixLuciadRIA
RIA-2318
Bug fixLuciadRIA
RIA-2309
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
LoadSpatially
strategy.
Bug fixLuciadRIA
RIA-1134
Bug fixLuciadRIA
RIA-2286, RIA-2039
Bug fixLuciadRIA
RIA-2289
Bug fixLuciadRIA
RIA-2283
Bug fixLuciadRIA
RIA-2271
Bug fixLuciadRIA
RIA-2024
Bug fixLuciadRIA
RIA-2275
Bug fixLuciadRIA
RIA-2267
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
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
Bug fixLuciadRIA
Bug fixLuciadRIA
RIA-2259
Bug fixLuciadRIA
RIA-2255
Bug fixLuciadRIA
RasterTileSetModel.getImage
. The onError
callback takes 2 arguments, not one.
Bug fixLuciadRIA
UrlTileSetModel
.
Bug fixLuciadRIA
RIA-2240
Bug fixLuciadRIA
RIA-2238
Bug fixLuciadRIA
Controller.onKeyEvent
.
This function accepts a KeyEvent
, not a GestureEvent
.
Bug fixLuciadRIA
RIA-478
Store
does not return a
feature id in reaction to CRUD operations.
Bug fixLuciadRIA
RIA-2221
Bug fixLuciadRIA
RIA-2223
ParameterizedLinePainter
when the shapes
reference is the same as the map reference.
Bug fixLuciadRIA
RIA-2024
LineStyle.color
property is set to
null
.
Bug fixLuciadRIA
RIA-2197
Bug fixLuciadRIA
RIA-2195
OGC3DTilesModel
are
reported now in the rejected promise as RequestError
object.
Bug fixLuciadRIA
RIA-2200
PointCloudStyle.scalingMode
. Now it is possible to use
ScalingMode.PIXEL_SIZE
mode for point cloud data visualization.
Bug fixLuciadRIA
FeaturePainter.invalidateById
.
Bug fixLuciadRIA
RIA-2121
BasicFeaturePainter
.
Bug fixLuciadRIA
RIA-2137
Bug fixLuciadRIA
subdomains
option for UrlTileSetModel
's
constructor is now correctly marked as optional.
Bug fixLuciadRIA
RIA-2046
Bug fixLuciadRIA
RIA-2131
Rotation
parameter when drawing image symbols.
Bug fixLuciadRIA
RIA-2130
RasterImageModel
or
when altering a
property of WMSImageModel
.
Bug fixLuciadRIA
RIA-2122
Bug fixLuciadRIA
ShapeType.SECTOR
.
Bug fixLuciadRIA
ContextMenu.items
for items that are separators.
Also updated the TypeScript definition for ContextMenuItem
.
Bug fixLuciadRIA
luciad/util/Promise
.
Bug fixLuciadRIA
Controller.onDrawLabel
to RIA's TypeScript definition.
Bug fixLuciadRIA
RIA-1696
WebGLMap
with Firefox 51 or later.
Bug fixLuciadRIA
RIA-1822, RIA-1837
Bug fixLuciadRIA
RIA-2069
Bug fixLuciadRIA
RIA-2080
Bug fixLuciadRIA
RIA-1973
Map.mapToViewTransformation.transform()
could throw
OutOfBoundsError
for a visible 3D point.
Bug fixLuciadRIA
RIA-2107
ShapeFactory.createShape
, and by
extension the
BasicCreateController
.
Bug fixLuciadRIA
RIA-2106
Bug fixLuciadRIA
Bug fixLuciadRIA
RIA-2089
License#loadLicenseFromUrl
.
This method of loading the license broke by changes introduced for RIA-2005 (in 2017.1.03).
Bug fixLuciadRIA
RIA-2083
MapNavigator.zoom
. Values for factor
larger than 1 cause the map
to be zoomed in instead of zoomed out.
Bug fixLuciadRIA
subdomains
option to UrlTileSetModel
's constructor in the
LuciadRIA TypeScript declaration file.
Bug fixLuciadRIA
RIA-2060
dataType
and samplingMode
properties to
RasterTileSetModel
in the LuciadRIA TypeScript declaration file.
Bug fixLuciadRIA
LayerTreeNode
did not
implement luciad.util.Evented
.
Bug fixLuciadRIA
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
Bug fixLuciadRIA
RIA-2459
RasterTileSetLayer
: for maps with a stretched aspect ratio (width >= 3 *
height), tile selection
was incorrect in some cases.
Bug fixLuciadRIA
RIA-2033
Bug fixLuciadRIA
RIA-2032
xmlns:ogc
namespace declaration anymore.
WFS servers may reject such requests due to unexpected namespace.
Bug fixLuciadRIA
RIA-2026
ShapeList
.
Bug fixLuciadRIA
RIA-2023
Bug fixLuciadRIA
RIA-2017
WMSImageLayer
would jitter slightly while panning slowly.
Bug fixLuciadRIA
RIA-2015, RIA-1998
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
License.loadLicenseFromUrl
: it incorrectly returned a Dojo Promise
(without a .catch
function) instead of A+ Promise.
Bug fixLuciadRIA
RIA-2004
Bug fixLuciadRIA
Bug fixLuciadRIA
Ellipse
did not extend
Shape
.
Bug fixLuciadRIA
RIA-1979
package.json
has been fixed; leading zeros in the patch number are now
removed.
Bug fixLuciadRIA
RIA-1985
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
Bug fixLuciadRIA
RIA-1748
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
TrajectoryPainter
or ParameterizedLinePainter
when
changing a feature's properties.
In that case, the styling did not reflect the property change.
Bug fixLuciadRIA
RIA-1957
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
Bug fixLuciadRIA
Bug fixLuciadRIA
RIA-517
Bug fixLuciadRIA
RIA-1934
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
FeaturePainter
draws more than a single shape for a feature.
Bug fixLuciadRIA
RIA-1915
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
ParameterizedLinePainter
or TrajectoryPainter
instance
in multiple maps (for example, switching from a 2D map to a 3D map).
Bug fixLuciadRIA
RIA-1908
noImplicitAny
option enabled.
Bug fixLuciadRIA
RIA-1900
Bug fixLuciadRIA
RIA-1860
Bug fixLuciadRIA
RIA-1886
Controller
would jitter when drawn on a
WebGLMap
.
Bug fixLuciadRIA
RIA-1875
Bug fixLuciadRIA
RIA-1876
FeaturePainter#invalidateById
is used on hardware-accelerated maps.
Bug fixLuciadRIA
RIA-1877
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
Bug fixLuciadRIA
RIA-1853
Bug fixLuciadRIA
RIA-990
Bug fixLuciadRIA
RIA-1834
Bug fixLuciadRIA
RIA-1848
Map.pickAt()
and
Map.pickClosestObject()
.
Bug fixLuciadRIA
RIA-1846
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.contains2D
method from working properly. GeoBuffer's bounds are now calculated
correctly.
Bug fixLuciadRIA
RIA-1840
Bug fixLuciadRIA
RIA-1821
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
Bug fixLuciadRIA
RIA-1772
Bug fixLuciadRIA
RIA-1768
Bug fixLuciadRIA
RIA-1646
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
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
Bug fixLuciadRIA
RIA-1736
Bug fixLuciadRIA
RIA-1730
cursor: default;
CSS property on LuciadRIA DOM elements. This allows you to override
the cursor
used on the Map.
Bug fixLuciadRIA
RIA-1706
GestureEvent.modifier
property was not properly set.
Bug fixLuciadRIA
RIA-1704
Bug fixLuciadRIA
RIA-1675
Bug fixLuciadRIA
RIA-1667
Bug fixLuciadRIA
RIA-1622
Bug fixLuciadRIA
RIA-1630
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
Bug fixLuciadRIA
RIA-1595
LoadEverything
: on Internet Explorer, there could be an error after
invalidating a layer through its QueryProvider.
Bug fixLuciadRIA
RIA-1616
Bug fixLuciadRIA
RIA-1615
SEPainterFactory
(based on SLD files).
Bug fixLuciadRIA
RIA-1613
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
Bug fixLuciadRIA
RIA-1603
Bug fixLuciadRIA
RIA-1576
Bug fixLuciadRIA
RIA-1600
FeaturePainter
when using
the CreateController
.
Bug fixLuciadRIA
RIA-1455
Bug fixLuciadRIA
RIA-1594
Bug fixLuciadRIA
RIA-1338
Bug fixLuciadRIA
RIA-1590
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
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
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
Bug fixLuciadRIA
RIA-1571
map.saveState()
on a 3D WebGLMap would throw an error.
Bug fixLuciadRIA
Bug fixLuciadRIA
RIA-1413
Bug fixLuciadRIA
RIA-1555
Bug fixLuciadRIA
RIA-1551
Bug fixLuciadRIA
RIA-1550
window.__LUCIAD_ROOT__
is not set.
Bug fixLuciadRIA
RIA-1538
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
Bug fixLuciadRIA
RIA-1462
Bug fixLuciadRIA
RIA-1015
- 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
Bug fixLuciadRIA
RIA-1442
Bug fixLuciadRIA
RIA-1440
Bug fixLuciadRIA
RIA-1428
Bug fixLuciadRIA
RIA-1427
Bug fixLuciadRIA
RIA-1425
Bug fixLuciadRIA
RIA-1349
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
Bug fixLuciadRIA
RIA-1284
LoadSpatially
strategy.
Bug fixLuciadRIA
RIA-1347, RIA-1246
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
Bug fixLuciadRIA
RIA-1396
FeatureLayer
out of
clusters. This prevents
unwanted features from being included in a cluster feature.
Bug fixLuciadRIA
RIA-1392
WMSTileSetModel
.
Bug fixLuciadRIA
RIA-1352
Bug fixLuciadRIA
ClusteringTransformer
can now handle models where all points are on the same longitude or latitude.
Bug fixLuciadRIA
RIA-1383
Bug fixLuciadRIA
RIA-1371
Bug fixLuciadRIA
RIA-1372
Bug fixLuciadRIA
RIA-1359
Bug fixLuciadRIA
RIA-773
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
Bug fixLuciadRIA
RIA-1333
Bug fixLuciadRIA
RIA-1319
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
Bug fixLuciadRIA
RIA-1308
Bug fixLuciadRIA
RIA-1200
Bug fixLuciadRIA
RIA-1032
decodeGeometry
method,
you will need to change this to decodeGeometryObject
to avoid warning messages to the
console.
Bug fixLuciadRIA
RIA-1301
Bug fixLuciadRIA
RIA-1297
Bug fixLuciadRIA
RIA-1226
Bug fixLuciadRIA
RIA-1013
Bug fixLuciadRIA
RIA-1052
ReferenceProvider
can now also parse WKT strings that encode a reference with a Gnomonic
projection.
Bug fixLuciadRIA
RIA-1028
Bug fixLuciadRIA
RIA-1008
Bug fixLuciadRIA
RIA-998
Bug fixLuciadRIA
Bug fixLuciadRIA
RIA-999
Bug fixLuciadRIA
RIA-991
Bug fixLuciadRIA
RIA-989
Bug fixLuciadRIA
RIA-918
Bug fixLuciadRIA
RIA-966
Bug fixLuciadRIA
RIA-961
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
Bug fixLuciadRIA
RIA-929
Bug fixLuciadRIA
RIA-900
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
Bug fixLuciadRIA
RIA-915
Bug fixLuciadRIA
RIA-917
Bug fixLuciadRIA
RIA-885
Bug fixLuciadRIA
RIA-277
Bug fixLuciadRIA
RIA-892
Bug fixLuciadRIA
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
Bug fixLuciadRIA
Bug fixLuciadRIA
Bug fixLuciadRIA
RIA-859
Bug fixLuciadRIA
RIA-848
Bug fixLuciadRIA
RIA-637
Bug fixLuciadRIA
RIA-745
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
Bug fixLuciadRIA
RIA-785
Bug fixLuciadRIA
RIA-783
Bug fixLuciadRIA
RIA-780
Bug fixLuciadRIA
RIA-740
Bug fixLuciadRIA
RIA-734
Bug fixLuciadRIA
RIA-614
Bug fixLuciadRIA
RIA-754
Bug fixLuciadRIA
RIA-772
Bug fixLuciadRIA
Bug fixLuciadRIA
RIA-743
Bug fixLuciadRIA
RIA-742
GeoBuffers
and
ShapeLists
.
Bug fixLuciadRIA
RIA-721
Bug fixLuciadRIA
RIA-634
Bug fixLuciadRIA
RIA-730
- 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
Bug fixLuciadRIA
RIA-723
FeaturePainter#invalidate
or FeaturePainter#invalidateAll
.
Bug fixLuciadRIA
RIA-685
Bug fixLuciadRIA
RIA-650
Bug fixLuciadRIA
RIA-639
Bug fixLuciadRIA
RIA-641
Bug fixLuciadRIA
RIA-635
Bug fixLuciadRIA
RIA-424
Bug fixLuciadRIA
RIA-600
Bug fixLuciadRIA
RIA-437
Bug fixLuciadRIA
RIA-482
Bug fixLuciadRIA
RIA-626
Bug fixLuciadRIA
RIA-620
Bug fixLuciadRIA
RIA-616
Bug fixLuciadRIA
RIA-606
Bug fixLuciadRIA
RIA-571
Bug fixLuciadRIA
RIA-476
Bug fixLuciadRIA
RIA-567
Bug fixLuciadRIA
RIA-587
Bug fixLuciadRIA
RIA-586
Bug fixLuciadRIA
RIA-584
GeoCanvas#drawText
rather than only points. The implementation
now
reflects the documentation.
Bug fixLuciadRIA
RIA-608
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
Bug fixLuciadRIA
RIA-562
Bug fixLuciadRIA
RIA-577
Bug fixLuciadRIA
RIA-535
Bug fixLuciadRIA
RIA-566
Bug fixLuciadRIA
RIA-560
Bug fixLuciadRIA
RIA-553
EditController
API documentation. It now no longer documents private methods.
Bug fixLuciadRIA
RIA-552
Bug fixLuciadRIA
Bug fixLuciadRIA
RIA-548
Bug fixLuciadRIA
RIA-546
Bug fixLuciadRIA
RIA-470
Bug fixLuciadRIA
RIA-544
Bug fixLuciadRIA
RIA-537
Bug fixLuciadRIA
RIA-538
Bug fixLuciadRIA
RIA-534
Bug fixLuciadRIA
RIA-528
ShapeProvider
now invalidates correctly when configured through FeatureLayer
constructor.
Bug fixLuciadRIA
RIA-529
Bug fixLuciadRIA
RIA-487
GeoJsonCodec
constructor now behaves like a normal constructor, making it easier to
subclass GeoJsonCodec
.
Bug fixLuciadRIA
RIA-461
Bug fixLuciadRIA
RIA-368
Bug fixLuciadRIA
RIA-452
Bug fixLuciadRIA
RIA-451
Bug fixLuciadRIA
RIA-448
Bug fixLuciadRIA
RIA-445
Bug fixLuciadRIA
RIA-443
Bug fixLuciadRIA
RIA-442
Bug fixLuciadRIA
RIA-439
Bug fixLuciadRIA
RIA-429
equals()
method to luciad/shape/Shape
and
luciad/reference/CoordinateReference
.
Bug fixLuciadRIA
RIA-420
Bug fixLuciadRIA
RIA-483
Bug fixLuciadRIA
RIA-409
Bug fixLuciadRIA
RIA-408
Bug fixLuciadRIA
RIA-388
Bug fixLuciadRIA
RIA-381
selectedObjects
on luciad/view/Map
to retrieve all the
selected features.
Bug fixLuciadRIA
RIA-377
Bug fixLuciadRIA
RIA-386
Bug fixLuciadRIA
RIA-212
FilterFactory
. When the filter is configured on a WFS request, these namespaces will be
encoded to XML.
Bug fixLuciadRIA
RIA-323
Bug fixLuciadRIA
RIA-376
Bug fixLuciadRIA
RIA-371
Bug fixLuciadRIA
RIA-284
Bug fixLuciadRIA
RIA-308
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
Bug fixLuciadRIA
Bug fixLuciadRIA
RIA-335
Bug fixLuciadRIA
RIA-333
Bug fixLuciadRIA
RIA-322
Bug fixLuciadRIA
RIA-321
Bug fixLuciadRIA
RIA-320
Bug fixLuciadRIA
RIA-318
Bug fixLuciadRIA
RIA-310
ShapeStyle
object literal is the same for each command.
Bug fixLuciadRIA
RIA-307
Bug fixLuciadRIA
RIA-300
Bug fixLuciadRIA
RIA-298
Bug fixLuciadRIA
RIA-296
Bug fixLuciadRIA
RIA-179
Bug fixLuciadRIA
RIA-294
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
Bug fixLuciadRIA
RIA-276
Bug fixLuciadRIA
RIA-292
Bug fixLuciadRIA
RIA-270
Bug fixLuciadRIA
RIA-265
Bug fixLuciadRIA
RIA-263
Bug fixLuciadRIA
RIA-234
Bug fixLuciadRIA
RIA-285
Bug fixLuciadRIA
RIA-129
Bug fixLuciadRIA
RIA-213
Bug fixLuciadRIA
RIA-191
Bug fixLuciadRIA
RIA-219
Bug fixLuciadRIA
RIA-218
TypeErrors
when issuing multiple drawLabel commands in
paintLabel()
.
Bug fixLuciadRIA
RIA-217
Bug fixLuciadRIA
RIA-216
Bug fixLuciadRIA
RIA-215
Bug fixLuciadRIA
RIA-214
Bug fixLuciadRIA
Bug fixLuciadRIA
RIA-125
Bug fixLuciadRIA
Bug fixLuciadRIA
RIA-118
Bug fixLuciadRIA
RIA-117
Bug fixLuciadRIA
RIA-112
Bug fixLuciadRIA
RIA-105
Bug fixLuciadRIA
RIA-110
Bug fixLuciadRIA
RIA-96
Bug fixLuciadRIA
Bug fixLuciadRIA
RIA-103
Bug fixLuciadRIA
RIA-104
Bug fixLuciadRIA
Bug fixLuciadRIA
RIA-95
Bug fixLuciadRIA
RIA-30
Bug fixLuciadRIA
RIA-178
Bug fixLuciadRIA
RIA-175
Bug fixAdvanced GIS Engine
RIA-1912
Bug fixAdvanced GIS Engine
RIA-1532
ConstructiveGeometryFactory.createSpherical
would modify ellipsoid
parameters of the reference
that was passed in.
Bug fixDefense Symbology
RIA-1753
Bug fixDefense Symbology
RIA-776
Bug fixDefense Symbology
RIA-1356
Bug fixDefense Symbology
RIA-1339
Bug fixDefense Symbology
RIA-903
Bug fixDefense Symbology
RIA-899
Bug fixDefense Symbology
RIA-818
Bug fixDefense Symbology
Bug fixDefense Symbology
RIA-759
Bug fixDefense Symbology
RIA-753
Bug fixDefense Symbology
RIA-728
Bug fixDefense Symbology
RIA-732
Bug fixDefense Symbology
RIA-623
Bug fixDefense Symbology
RIA-601
Upgrade considerationLuciadRIA
- 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
andundefined
.
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
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
Evented
class has been renamedEventedSupport
and theEvented
class has been changed to an interface. Custom classes that extend the oldEvented
class must now implement theEvented
interface. Classes that implement theEvented
interface can delegate requests to theEventedSupport
class. We recommend using the delegate pattern for this. -
The
emit
function has been deleted from theEvented
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 theFeatureModel
cannot be triggered by users, but is automatically triggered by LuciadRIA when an object is added to the model. -
The static functions
on
andonce
are also no longer available onEvented
since this is now an interface. These functions are however available on the newEventedSupport
Upgrade considerationLuciadRIA
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
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)
.
Upgrade considerationLuciadRIA
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.
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
luciad.view.WebGLMap
) on Internet Explorer 11.
You can still use software-rendered maps (luciad.view.Map
) on Internet Explorer 11.
Upgrade considerationLuciadRIA
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
Upgrade considerationLuciadRIA
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
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
- OGC services (WMS and WFS)
- GML decoding
- OGC BBox filters
swapAxes
flag in the constructor of
GMLCodec
, GeoJsonCodec
, WFSFeatureStore
,
WMSImageModel
or WMSTileSetModel
to customize the coordinate swapping behavior.
Upgrade considerationLuciadRIA
withCredentials
constructor option for UrlStore
and
WFSFeatureStore
has been deprecated. Use credentials
instead.
Upgrade considerationLuciadRIA
Upgrade considerationLuciadRIA
RIA-971
Upgrade considerationLuciadRIA
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
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
Upgrade considerationLuciadRIA
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
MapNavigator#defaults.snapToScaleLevels
is now
false
.
Upgrade considerationLuciadRIA
RIA-1469
GoogleImageModel
without an authentication parameter, an
Error
will be thrown.
Upgrade considerationLuciadRIA
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
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
Upgrade considerationLuciadRIA
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
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
Upgrade considerationLuciadRIA
RIA-545
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
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
<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
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
Upgrade considerationLuciadRIA
RIA-171
- 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.
- 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
Upgrade considerationLuciadRIA
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
Upgrade considerationLuciadRIA
Upgrade considerationLuciadRIA
Upgrade considerationLuciadRIA
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 Symbology
Upgrade considerationDefense Symbology
Disabling the fix
If you want to disable this fix and keep the old behavior, you can set theMilitarySymbologyPainter.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 |