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.
2024.1
2024.1.09
ImprovementLuciadCPillar
LCP-996
LineStyle::isInMetersLineStyle::isInMetersLineStyle::isInMeters to the API.
Bug fixLuciadCPillar
LCP-998
2024.1.08
ImprovementLuciadCPillar
LCP-978
Map::getVisibleAreaMap::getVisibleAreaMap::getVisibleArea now returns a reference with a more sensible name and id.
Bug fixLuciadCPillar
LCP-993
2024.1.07
ImprovementLuciadCPillar
LCP-983
FeatureModelUpdateFeatureModelUpdateFeatureModelUpdates containing zero changes.
Bug fixLuciadCPillar
LCP-988
Bug fixLuciadCPillar
LCP-981
viewOriented on-path labels would not have a correctly rotated hitbox.
2024.1.06
Bug fixLuciadCPillar
LCP-973
OnPathLabelStyleOnPathLabelStyleOnPathLabelStyle if the viewOriented option was enabled.
2024.1.05
ImprovementLuciadCPillar
LCP-969
GdalModelDecoderGdalModelDecoderGdalModelDecoder will now still open GeoTIFF files with a PaletteIndex channel even if they
contain other channels.
ImprovementLuciadCPillar
LCP-665
Feature::getValueFeature::getValueFeature::getValue with a more specific geometry type as
type parameter.
Bug fixLuciadCPillar
LCP-967
Bug fixLuciadCPillar
LCP-966
Bug fixLuciadCPillar
LCP-962
2024.1.04
ImprovementLuciadCPillar
LCP-956
FeatureCanvas::LabelDrawCommand::viewOrientedFeatureCanvas::LabelDrawCommand::viewOrientedFeatureCanvas::LabelDrawCommand::viewOriented that allows you to choose whether a
label's rotation should be relative to the view.
ImprovementLuciadCPillar
LCP-807
2024.1.03
ImprovementLuciadCPillar
LCP-949
GeoPackageModelEncoderGeoPackageModelEncoderGeoPackageModelEncoder now implicitly converts certain Geometry types that are not supported
by the GeoPackage format to an equivalent Geometry type that is supported. See the "Supported Geometry types"
section of the documentation of GeoPackageModelEncoder::exportFeatureModelGeoPackageModelEncoder::exportFeatureModelGeoPackageModelEncoder::exportFeatureModel for a full list.
ImprovementLuciadCPillar
LCP-941
Map::getVisibleAreaMap::getVisibleAreaMap::getVisibleArea was added. This function returns a geometry, defined in a geodetic
reference that represent which part of the map is currently visible. This method is similar to the
Map::getMapBoundsMap::getMapBoundsMap::getMapBounds function, but returns a more precise area.
ImprovementLuciadCPillar
LCP-947
IFeatureModelIFeatureModelIFeatureModel to a GeoPackage file or when creating an empty GeoPackage
file, GeoPackageModelEncoderGeoPackageModelEncoderGeoPackageModelEncoder now lets you pick a custom table name for each data type through
the GeoPackageFeatureModelExportOptionsGeoPackageFeatureModelExportOptionsGeoPackageFeatureModelExportOptions/GeoPackageFeatureModelCreateOptionsGeoPackageFeatureModelCreateOptionsGeoPackageFeatureModelCreateOptions respectively.
ImprovementLuciadCPillar
LCP-945
Bug fixLuciadCPillar
LCP-955
Bug fixLuciadCPillar
LCP-952
GeoPackageModelEncoderGeoPackageModelEncoderGeoPackageModelEncoder now properly closes the loop for rings in a Polygon when exporting an
IFeatureModelIFeatureModelIFeatureModel to GeoPackage. Similarly, GeoPackageModelDecoderGeoPackageModelDecoderGeoPackageModelDecoder
ignores the last point in a ring if it is the same as the first point.
Bug fixLuciadCPillar
LCP-950
Map::Renderer::toImageMap::Renderer::toImageMap::Renderer::toImage could print a (harmless) error message when using a debug build.
This is now fixed.
2024.1.02
Bug fixLuciadCPillar
LCP-938
RelativePosition::southWestRelativePosition::southWestRelativePosition::southWest would anchor labels
from the bottom right instead of the top right.
2024.1.01
ImprovementLuciadCPillar
LCP-932
FeatureStateManager::getFeaturesWithStateEnabledFeatureStateManager::getFeaturesWithStateEnabledFeatureStateManager::getFeaturesWithStateEnabled to retrieve all features of a layer
that have a given feature state enabled.
ImprovementLuciadCPillar
LCP-935
ImprovementLuciadCPillar
LCP-935
Bug fixLuciadCPillar
LCP-934
Map::Renderer::paintMap::Renderer::paintMap::Renderer::paint could return false (meaning the rendering is not complete
yet) while it should return true.
Bug fixLuciadCPillar
LCP-682, LCP-554
Bug fixLuciadCPillar
LCP-913
overrideColor in MilitarySymbolStyleMilitarySymbolStyleMilitarySymbolStyle is set.
Bug fixLuciadCPillar
LCP-925
overrideColor in MilitarySymbolStyleMilitarySymbolStyleMilitarySymbolStyle was not taken in account for parts of Military Icons.
Bug fixLuciadCPillar
LCP-924
fillEnabled in MilitarySymbolStyleMilitarySymbolStyleMilitarySymbolStyle did not yield the expected result.
Bug fixLuciadCPillar
LCP-922
gpkg_geometry_columns table can now still be opened.
2024.1
New featureLuciadCPillar
Fonts::registerFontFonts::registerFontFonts::registerFont.
Please refer to the fonts article for
more information.
New featureLuciadCPillar
Layer::isBusyLayer::isBusyLayer::isBusy and Map::isBusyMap::isBusyMap::isBusy methods. ILayerObserverILayerObserverILayerObserver
and IMapObserverIMapObserverIMapObserver allow you to monitor changes to the busy property.
To demonstrate this, the samples now have a busy spinner icon in the layer list that is visible whenever the layer
is busy.
New featureLuciadCPillar
LCP-869
mod expression in StyleExpressionFactoryStyleExpressionFactoryStyleExpressionFactory.
New featureLuciadCPillar
Rgba32, comprising 4 channels of floating-point values, has been added to the list of available pixel formats in PixelFormatPixelFormatPixelFormat.
New featureLuciadCPillar
DensitySettingsDensitySettingsDensitySettings
on the FeatureLayerFeatureLayerFeatureLayer. Please refer to the density painting
article for more information. Also see the "Tracks" sample for an example.
New featureLuciadCPillar
The BezierCurveBezierCurveBezierCurve geometry now also supports cubic interpolation. A Bézier curve can now be
created by on of these methods:
GeometryFactory::createQuadraticBezierCurveGeometryFactory::createQuadraticBezierCurveGeometryFactory::createQuadraticBezierCurve: creates quadratic Bézier curve that is defined by 3 control points.GeometryFactory::createCubicBezierCurveGeometryFactory::createCubicBezierCurveGeometryFactory::createCubicBezierCurve: creates a cubic Bézier curve that is defined by 4 control points.
You can make the distinction between both using the new BezierCurve::getControlPointCountBezierCurve::getControlPointCountBezierCurve::getControlPointCount
function. Also, the editing sample demonstrates how to create and edit a CubicBezierCurve.
ImprovementLuciadCPillar
LCP-883
MilitarySymbolMilitarySymbolMilitarySymbol has a new method getValueMaximumLength that returns the maximum length allowed when invoking MilitarySymbol::putValueMilitarySymbol::putValueMilitarySymbol::putValue.
ImprovementLuciadCPillar
- EXT_mesh_gpu_instancing
- EXT_structural_metadata
- loading of point clouds from GLB files
Property Textures and Multiple Feature IDs are not supported.
See Ogc3DTilesModelDecoderOgc3DTilesModelDecoderOgc3DTilesModelDecoder class documentation for a more thorough list of supported features.
ImprovementLuciadCPillar
LCP-884
MbTilesModelDecoderOptions::Builder::tileSizeMbTilesModelDecoderOptions::Builder::tileSizeMbTilesModelDecoderOptions::Builder::tileSize
for more information.
ImprovementLuciadCPillar
LCP-885
ImprovementLuciadCPillar
LCP-762
BackgroundStyleBackgroundStyleBackgroundStyle class was added. You can use this new class in the following locations:
ImprovementLuciadCPillar
LCP-261
Map::getMapBoundsMap::getMapBoundsMap::getMapBounds.
ImprovementLuciadCPillar
LCP-120
Map::getMapScaleMap::getMapScaleMap::getMapScale.
ImprovementLuciadCPillar
LCP-754
CoordinateReferenceProviderCoordinateReferenceProviderCoordinateReferenceProvider now also has support for WKT strings that describe a
topocentric reference.
Bug fixLuciadCPillar
LCP-818
RasterLayerRasterLayerRasterLayer: when the RasterLayerTypeRasterLayerTypeRasterLayerType was set to RasterLayerType::BackgroundRasterLayerType::BackgroundRasterLayerType::Background,
an error was thrown if the IRasterModelIRasterModelIRasterModel was referenced with tie points.
Bug fixLuciadCPillar
FeatureLayerFeatureLayerFeatureLayer didn't always display all features under the following conditions:
FeatureLayerLoadingStrategy::LoadSpatiallyFeatureLayerLoadingStrategy::LoadSpatiallyFeatureLayerLoadingStrategy::LoadSpatiallyis used.- The feature uses a geocentric or topocentric reference.
Bug fixLuciadCPillar
LCP-708
Bug fixLuciadCPillar
FeatureHandlesProviderFeatureHandlesProviderFeatureHandlesProvider didn't check its delegate IGeometryHandlesProviderIGeometryHandlesProviderIGeometryHandlesProvider
to determine if a feature can be edited or not.
Upgrade considerationLuciadCPillar
- The
GeometryFactory::createBezierCurvefunction was renamed toGeometryFactory::createQuadraticBezierCurveGeometryFactory::createQuadraticBezierCurveGeometryFactory::createQuadraticBezierCurve. - The
BezierCurve::getControlPointBezierCurve::getControlPointBezierCurve::getControlPointmethod now takes an index as parameter. To revert to the previous behavior, you can now call this method with an index of 1. - The
ObservableBezierCurveUtil::deriveControlPointObservableBezierCurveUtil::deriveControlPointObservableBezierCurveUtil::deriveControlPointnow also takes an index as parameter to align with theBezierCurve::getControlPointBezierCurve::getControlPointBezierCurve::getControlPointmethod.
Upgrade considerationLuciadCPillar
harfbuzz library has been updated to version 8.3.
Upgrade considerationLuciadCPillar
- System.Text.Json was updated to version 8.0.5
- NLog was updated to version 5.3.4
Upgrade considerationLuciadCPillar
LayerLayerLayers and LayerListLayerListLayerLists can only be attached to a single MapMapMap
at a time. Directly, as a LayerList on a Map, or indirectly, as the LayerList of a IControllerIControllerIController
on a map. The underlying model can be used by multiple layers, so if you previously had a layer on multiple maps, you
now have to make multiple layers instead.
2024.0
2024.0.08
ImprovementLuciadCPillar
LCP-910
FeaturePainterContext::is3DFeaturePainterContext::is3DFeaturePainterContext::is3D to allow an IFeaturePainterIFeaturePainterIFeaturePainter to check
whether the map it's painting on is 3D.
Bug fixLuciadCPillar
LCP-901
Bug fixLuciadCPillar
LCP-886
RasterLayerRasterLayerRasterLayer fixed a bug that would trigger an error for multi-level raster models that have
many tiles at level 0.
Bug fixLuciadCPillar
LCP-905
Bug fixLuciadCPillar
LCP-900
Bug fixLuciadCPillar
LCP-899
MilitarySymbolMilitarySymbolMilitarySymbol that is styled with an
overrideColor would sometimes be rendered using the affiliation color and vice versa.
Upgrade considerationLuciadCPillar
LCP-908
libtiff library has been updated to version 4.7.0.
2024.0.07
Bug fixLuciadCPillar
LCP-893
Bug fixLuciadCPillar
LCP-894
Upgrade considerationLuciadCPillar
LCP-896
libcurl library has been updated to version 8.10.1.
2024.0.06
ImprovementLuciadCPillar
LCP-882
Bug fixLuciadCPillar
LCP-890
Bug fixLuciadCPillar
LCP-888
IFeatureModelIFeatureModelIFeatureModels that resulted in a crash. This issue
could occur when querying (features or bounds) and persisting changes at the same time on different threads.
2024.0.05
ImprovementLuciadCPillar
LCP-881
ModifierType::DateTime.
ImprovementLuciadCPillar
LCP-870
MilitarySymbolMilitarySymbolMilitarySymbol has a new method getModifierType that returns the ModifierType of the given modifier.
Bug fixLuciadCPillar
LCP-879
Bug fixLuciadCPillar
LCP-877
MilitarySymbologyCanvasMilitarySymbologyCanvasMilitarySymbologyCanvas: corrected misaligned military icons on 3D maps. This issue specifically affects icons that are not centered.
Bug fixLuciadCPillar
LCP-866
Bug fixLuciadCPillar
LCP-874
Bug fixLuciadCPillar
LCP-880
MilitarySymbol::copyToFeatureMilitarySymbol::copyToFeatureMilitarySymbol::copyToFeature would sometimes not reset the Modifier values.
Bug fixLuciadCPillar
LCP-878
FeatureState::getValueFeatureState::getValueFeatureState::getValue would throw an exception in C# and Android.
2024.0.04
ImprovementLuciadCPillar
LCP-862
Added support for editing PolygonPolygonPolygon instances using the EditorEditorEditor class.
This is done using the new PolygonHandlesProviderPolygonHandlesProviderPolygonHandlesProvider class. Editing polygons works out of
the box: this new handles provider is used by default by FeatureHandlesProviderFeatureHandlesProviderFeatureHandlesProvider and
CompositeGeometryHandlesProviderCompositeGeometryHandlesProviderCompositeGeometryHandlesProvider.
In addition to this functionality, a few utilities where added to modify and handle
PolygonPolygonPolygon instances:
ObservablePolygonUtilObservablePolygonUtilObservablePolygonUtilPolygon::replaceExteriorRingPolygon::replaceExteriorRingPolygon::replaceExteriorRingPolygon::replaceInteriorRingPolygon::replaceInteriorRingPolygon::replaceInteriorRingPolygon::appendInteriorRingPolygon::appendInteriorRingPolygon::appendInteriorRingPolygon::removeInteriorRingPolygon::removeInteriorRingPolygon::removeInteriorRing
Bug fixLuciadCPillar
LCP-861
Bug fixLuciadCPillar
LCP-826
Bug fixLuciadCPillar
LCP-834
Bug fixLuciadCPillar
LCP-835
IFeatureModelIFeatureModelIFeatureModel
on a FeatureLayerFeatureLayerFeatureLayer with FeatureLayerLoadingStrategyFeatureLayerLoadingStrategyFeatureLayerLoadingStrategyLoadSpatially.
Bug fixLuciadCPillar
LCP-864
Bug fixLuciadCPillar
LCP-861
PathLabelPosition::PortPathLabelPosition::PortPathLabelPosition::Port/PathLabelPosition::StarboardPathLabelPosition::StarboardPathLabelPosition::Starboard
would not be placed properly in 3D.
Bug fixLuciadCPillar
LCP-832
PolylineCreatorPolylineCreatorPolylineCreator and PolylineRingCreatorPolylineRingCreatorPolylineRingCreator consumed
mouse move events, even before the first point was created.
Bug fixLuciadCPillar
LCP-859
PointEditHandle::addOnTouchLongPressActionPointEditHandle::addOnTouchLongPressActionPointEditHandle::addOnTouchLongPressAction only worked when adding a mouse
(drag or click) action as well. It now also works when only a touch long press action is added.
2024.0.03
ImprovementLuciadCPillar
LCP-831
Bug fixLuciadCPillar
LCP-857
MgrsFormat::parseMgrsFormat::parseMgrsFormat::parse would crash for certain invalid MGRS strings.
Upgrade considerationLuciadCPillar
LCP-827
abseil. This new dependency requires no code
changes.
2024.0.02
ImprovementLuciadCPillar
LCP-821
mipmapFiltering method of a MeshStyle::BuilderMeshStyle::BuilderMeshStyle::Builder.
ImprovementLuciadCPillar
LCP-801
MapMapMap. These are used to reduce the amount
of cached data of a layer or reduce the quality of some layers when the overall memory consumption of the MapMapMap.
reaches the limits of the memory hints. If warnings are being logged about quality reduction
in your application, you can now increase the values for the memory hints via Map::Builder::maxMemoryUsageHintMap::Builder::maxMemoryUsageHintMap::Builder::maxMemoryUsageHint.
Bug fixLuciadCPillar
LCP-817
Bug fixLuciadCPillar
LCP-823
Bug fixLuciadCPillar
LCP-822
SelectEventHandlerSelectEventHandlerSelectEventHandler, HoverEventHandlerHoverEventHandlerHoverEventHandler and EditorEditorEditor
didn't work correctly for layers that were added to the Map's IControllerIControllerIController.
Bug fixLuciadCPillar
LCP-815
Bug fixLuciadCPillar
LCP-829
CoordinateReferenceProviderCoordinateReferenceProviderCoordinateReferenceProvider incorrectly parsed a few EPSG codes.
Coordinate references using the following datums are affected:
- IG05/12 Intermediate Datum (EPSG:1144)
- World Geodetic System 1984 (G730) (EPSG:1152)
- World Geodetic System 1984 (Transit) (EPSG:1166)
- CR-SIRGAS (EPSG:1225)
- Sistem Referensi Geospasial Indonesia 2013 (EPSG:1293)
- International Terrestrial Reference Frame 1992 (EPSG:6651)
Bug fixLuciadCPillar
LCP-825
FeatureLayerFeatureLayerFeatureLayer: Fixed an issue where vertical polygons would not always be filled correctly.
Bug fixLuciadCPillar
LCP-824
Polyline::ComputePoint could return CoordinateCoordinateCoordinates
with NaN values if the polyline had a 2D length of 0 while consisting of multiple points.
Upgrade considerationLuciadCPillar
LCP-820
2024.0.01
ImprovementLuciadCPillar
LCP-794
ImprovementLuciadCPillar
LCP-785
ImprovementLuciadCPillar
LCP-778, LCP-783
Bug fixLuciadCPillar
LCP-809
Bug fixLuciadCPillar
LCP-811
Bug fixLuciadCPillar
LCP-804
Bug fixLuciadCPillar
LCP-796
Bug fixLuciadCPillar
LCP-795
Bug fixLuciadCPillar
LCP-784
Bug fixLuciadCPillar
LCP-789
FeatureLayerFeatureLayerFeatureLayer that could occur for feature data that is
continuously updated. This could lead to a crash.
Bug fixLuciadCPillar
FeatureLayerFeatureLayerFeatureLayer.
Bug fixLuciadCPillar
LCP-788
Bug fixLuciadCPillar
LCP-805, LCP-806
OnPathLabelStyle::relativeLocation would sometimes have a
jittery orientation.
2024.0
New featureLuciadCPillar
- Implicit tiling (both JSON and binary subtrees, no metadata yet).
- GLB/glTF (using internal, Base64 inlined or external buffers) as payload.
- Supported glTF 2.0 extensions:
- KHR_texture_transform
- KHR_mesh_quantization
- EXT_meshopt_compression
- EXT_mesh_features
New featureLuciadCPillar
- The MBTiles Developer's Guide.
- The reference documentation of
MbTilesModelDecoderMbTilesModelDecoderMbTilesModelDecoderon how to decode MBTiles.
New featureLuciadCPillar
New featureLuciadCPillar
New featureLuciadCPillar
RasterLayerType::BackgroundRasterLayerType::BackgroundRasterLayerType::Backgroundlayers.RasterLayerType::InteractiveRasterLayerType::InteractiveRasterLayerType::Interactivelayers.
RasterLayerTypeRasterLayerTypeRasterLayerType through the RasterLayer::BuilderRasterLayer::BuilderRasterLayer::Builder class.
The default raster layer type is RasterLayerType::BackgroundRasterLayerType::BackgroundRasterLayerType::Background.
For more information, please read the RasterLayerTypeRasterLayerTypeRasterLayerType API documentation
and the Interacting with raster layers article.
New featureLuciadCPillar
IMultilevelTiledAttributionProviderIMultilevelTiledAttributionProviderIMultilevelTiledAttributionProvider. Additionally, all
attributions on a map can now be retrieved via its MapAttributionsMapAttributionsMapAttributions.
This feature is demonstrated for HERE Maps and MBTiles in the 'Dataformats' sample.
For more information, please refer to the attribution
article.
ImprovementLuciadCPillar
ImprovementLuciadCPillar
ImprovementLuciadCPillar
ImprovementLuciadCPillar
- KHR_texture_transform
- KHR_mesh_quantization
- EXT_meshopt_compression
ImprovementLuciadCPillar
LCP-713
Map::HeightProvider::retrieveHeightAtMap::HeightProvider::retrieveHeightAtMap::HeightProvider::retrieveHeightAt method has been added.
It is now possible to query the map for elevation values at a provided point on the map and at provided pixel density.
For more information, please read the Map::HeightProvider::retrieveHeightAtMap::HeightProvider::retrieveHeightAtMap::HeightProvider::retrieveHeightAt API documentation
and the updated How to get height data from the map article.
Bug fixLuciadCPillar
LCP-703
1.1.1
after the canceled authentication for WMS 1.3.0.
Upgrade considerationLuciadCPillar
libcurl: updated to version8.6.0openssl: updated to version3.1.2zlib: updated to version1.3.1
Upgrade considerationLuciadCPillar
Upgrade considerationLuciadCPillar
freetype library has been updated to version 2.13.2.
Upgrade considerationLuciadCPillar
Upgrade considerationLuciadCPillar
Upgrade considerationLuciadCPillar
libwebp to support the WebP format.
Upgrade considerationLuciadCPillar
Upgrade considerationLuciadCPillar
meshoptimizer library.
Upgrade considerationLuciadCPillar
protobuf library.
2023.1
2023.1.06
Bug fixLuciadCPillar
LCP-779
IconDrawCommand::scale,
IconDrawCommand::size and/or TextDrawCommand::scale options.
2023.1.05
ImprovementLuciadCPillar
LCP-771
ImprovementLuciadCPillar
LCP-770
Bug fixLuciadCPillar
LCP-777
MouseGestureRecognizerMouseGestureRecognizerMouseGestureRecognizer when 2 consecutive mouse pressed events using the
same mouse button arrive. This could only happen in rare circumstances, for example when using Alt-Tab or
when another window steals focus.
Bug fixLuciadCPillar
LCP-773, LCP-716
FeatureLayerFeatureLayerFeatureLayer: fixed an issue that could, in rare cases, cause a crash of the application.
Bug fixLuciadCPillar
LCP-767
Bug fixLuciadCPillar
LCP-757
FeatureLayerFeatureLayerFeatureLayer: Fixed an issue where transparent lines would not have a consistent color in
sharp corners or where they overlap themselves.
Bug fixLuciadCPillar
LCP-766
2023.1.04
Bug fixLuciadCPillar
LCP-763
Bug fixLuciadCPillar
LCP-760
Bug fixLuciadCPillar
LCP-745
Bug fixLuciadCPillar
LCP-759
Bug fixLuciadCPillar
LCP-758
GdalModelDecoderGdalModelDecoderGdalModelDecoder could return a model with a reference with an ellipsoid
equidistant cylindrical projection instead of a spherical equidistant cylindrical projection.
Upgrade considerationLuciadCPillar
libbacktrace library has been updated to version 20210118.
2023.1.03
Bug fixLuciadCPillar
LCP-756
Bug fixLuciadCPillar
LCP-749
2023.1.02
ImprovementLuciadCPillar
LCP-752
ObservableObservableObservable class can now be used with all geometry types instead of only a subset.
ImprovementLuciadCPillar
LCP-752
ObservableGeometryUtilObservableGeometryUtilObservableGeometryUtil class now has methods to derive observables for all geometry types.
The ObservableBezierCurveUtilObservableBezierCurveUtilObservableBezierCurveUtil was also added. This class can derive observable instance
for each point that defines a bezier curve.
ImprovementLuciadCPillar
LCP-742
ImprovementLuciadCPillar
LCP-635, LCP-613
Bug fixLuciadCPillar
LCP-721
MgrsGridSetting::Builder::labelStyleMgrsGridSetting::Builder::labelStyleMgrsGridSetting::Builder::labelStyle has been made consistent with
the styling of the default grid: it now uses a black halo by default instead of no halo.
Bug fixLuciadCPillar
LCP-717
Bug fixLuciadCPillar
LCP-748
CoordinateReferenceProviderCoordinateReferenceProviderCoordinateReferenceProvider is now more flexible in
accepting parameter names for the projection center.
Bug fixLuciadCPillar
LCP-736
Bug fixLuciadCPillar
Upgrade considerationLuciadCPillar
LCP-710, LCP-712
A couple of methods now use double values instead of integer values:
Map::resizeMap::resizeMap::resizeMap::getWidthMap::getWidthMap::getWidthandMap::getHeightMap::getHeightMap::getHeightCamera::getWidthCamera::getWidthCamera::getWidthandCamera::getHeightCamera::getHeightCamera::getHeight
This was done to avoid precision loss due to rounding errors. In rare cases, this precision loss could lead to incorrect behavior like:
- map-wide jittering effects
- a (small) black border at the side of the map
- the map content being stretched out very slightly
Upgrade considerationLuciadCPillar
LCP-737
boost library has been updated to version 1.83.0.
2023.1.01
ImprovementLuciadCPillar
LCP-729
It is now possible to specify an OcclusionModeOcclusionModeOcclusionMode when painting geometries and (non-label)
icons or text. This allows you to (partially) show 3D objects that would otherwise be obscured by other 3D
objects. See
FeatureCanvas::GeometryDrawCommand::occlusionModeFeatureCanvas::GeometryDrawCommand::occlusionModeFeatureCanvas::GeometryDrawCommand::occlusionModeFeatureCanvas::IconDrawCommand::occlusionModeFeatureCanvas::IconDrawCommand::occlusionModeFeatureCanvas::IconDrawCommand::occlusionModeFeatureCanvas::TextDrawCommand::occlusionModeFeatureCanvas::TextDrawCommand::occlusionModeFeatureCanvas::TextDrawCommand::occlusionMode
ImprovementLuciadCPillar
BASED_ON_DATA as a new FacetCullingTypeFacetCullingTypeFacetCullingType when you are styling mesh data
for a TileSet3DLayerTileSet3DLayerTileSet3DLayer. 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, or if you are mixing
double-sided and non-double-sided material.
ImprovementLuciadCPillar
LCP-701
The precision of WKT and EPSG 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
Bug fixLuciadCPillar
LCP-716
FeatureLayerFeatureLayerFeatureLayer: fixed an issue that could cause a double free error on application exit when
lines are visualized on the map.
Bug fixLuciadCPillar
LCP-718
IFeatureModelIFeatureModelIFeatureModels persistenceManager::getChanges now gives
the actual changes instead of an empty list.
Bug fixLuciadCPillar
LCP-660
The C# WinForms and WPF integration code has been improved to more easily support scenarios where a Map is removed from the application window, and moved to a different component in that same application window. An example of such a scenario is when the WinForms or WPF Map components are used within a docking UI framework.
Before this improvement, this would either cause crashes or the map component would not paint its Map content anymore.
Bug fixLuciadCPillar
LCP-730
StyleExpressionFactory::casesStyleExpressionFactory::casesStyleExpressionFactory::cases threw an exception when using it with boolean values.
Bug fixLuciadCPillar
LCP-715
IFeatureModelIFeatureModelIFeatureModel's observer is called right before or while
a Map::RendererMap::RendererMap::Renderer is destroyed.
Bug fixLuciadCPillar
LCP-707
Bug fixLuciadCPillar
LCP-706
Upgrade considerationLuciadCPillar
myVRArchive library. This new dependency requires no code
changes.
2023.1
New featureLuciadCPillar
LonLatGridLonLatGridLonLatGrid API documentation and
see the LonLat Grid article.
New featureLuciadCPillar
New featureLuciadCPillar
ComplexStrokeLineStyleComplexStrokeLineStyleComplexStrokeLineStyle API has been added and FeatureCanvas::GeometryDrawCommandFeatureCanvas::GeometryDrawCommandFeatureCanvas::GeometryDrawCommand
has been extended to accept it. Using this, you can stroke a line with repeated patterns and decorations. They can
also be used for editor lines and RasterLayerRasterLayerRasterLayer outlines.
See ComplexStrokePatternFactoryComplexStrokePatternFactoryComplexStrokePatternFactory for an overview of available patterns.
See the complex stroke tutorial
for a step-by-step guide.
New featureLuciadCPillar
MgrsFormatMgrsFormatMgrsFormat has been added which allows to format geodetic points to MGRS UTM/UPS coordinates.
It can also be used to parse MGRS UTM/UPS coordinates to a geodetic point.
See the MGRS Grid article for more information.
New featureLuciadCPillar
It is now possible to create 3D icons from glTF files in LuciadCPillar by using the
FeatureCanvas::drawIcon3DFeatureCanvas::drawIcon3DFeatureCanvas::drawIcon3D method.
FeatureCanvas::Icon3DDrawCommandFeatureCanvas::Icon3DDrawCommandFeatureCanvas::Icon3DDrawCommand allows you to set the glTF source file to load as well as other properties
such as transformations: scale, rotation, orientation and translation. As well as color modulation, mesh
position, query-ability of the mesh and a setting to tell if the mesh contains transparent surfaces.
The camera sample demonstrates how to import a glTF file. This information can also be found in the article
Learn how to load and visualize your glTF data.
For information about the limitation of our glTF support in LuciadCPillar please refer to the article
Which glTF version is supported and what are the limitations?.
New featureLuciadCPillar
GeoPackageModelDecoderGeoPackageModelDecoderGeoPackageModelDecoder
the isEditable flag in the GeoPackageModelDecoderOptionsGeoPackageModelDecoderOptionsGeoPackageModelDecoderOptions needs to be set to true.
To save the changes made to an edited GeoPackage, the IFeatureModelIFeatureModelIFeatureModel's FeatureModelPersistenceManagerFeatureModelPersistenceManagerFeatureModelPersistenceManager
needs to be used. See the GeoPackage feature editing article for more information.
New featureLuciadCPillar
RasterStyleRasterStyleRasterStyle class.
Specifically, you can now set:
- The raster
RasterStyle::Builder::opacityRasterStyle::Builder::opacityRasterStyle::Builder::opacity - The raster
RasterStyle::Builder::brightnessRasterStyle::Builder::brightnessRasterStyle::Builder::brightness - The raster
RasterStyle::Builder::contrastRasterStyle::Builder::contrastRasterStyle::Builder::contrast - The raster
RasterStyle::Builder::modulationColorRasterStyle::Builder::modulationColorRasterStyle::Builder::modulationColor
RasterStyleRasterStyleRasterStyle.
ImprovementLuciadCPillar
FeatureLayerFeatureLayerFeatureLayer not queryable, see
FeatureLayer::setQueryableFeatureLayer::setQueryableFeatureLayer::setQueryable. When a layer doesn't have features that can be selected, this
method prevents it from happening for the entire layer. I then also reduces the performance overhead for that
layer in the Map::queryFeaturesMap::queryFeaturesMap::queryFeatures method.
ImprovementLuciadCPillar
LCP-687
GraphicsEffectsGraphicsEffectsGraphicsEffects, AtmosphereEffectAtmosphereEffectAtmosphereEffect for details.
ImprovementLuciadCPillar
MapMapMap, see Map::addObserverMap::addObserverMap::addObserver.
ImprovementLuciadCPillar
LuciadCPillar has been upgraded to support .NET standard 2.0. It is now much easier to use the LuciadCPillar C# binary on newer .NET implementations. LuciadCPillar already supported .NET Framework 4.7.2 (or later). It now also supports all .NET Core and .NET versions (5 or later).
Note that building and running the LuciadCPillar C# samples still requires .NET Framework 4.7.2.
ImprovementLuciadCPillar
LCP-659
GdalModelDecoderGdalModelDecoderGdalModelDecoder now supports GeoTIFF elevation data using unsigned 16-bit integers.
For more information, please read the GdalModelDecoderGdalModelDecoderGdalModelDecoder API documentation and
see the updated How to load elevation data article.
ImprovementLuciadCPillar
Feature::Builder::resetIdFeature::Builder::resetIdFeature::Builder::resetId.
This can be useful when needing to remove the id of an existing feature. For example, to let an IFeatureModelUpdaterIFeatureModelUpdaterIFeatureModelUpdater assign a new id to it.
Bug fixLuciadCPillar
LCP-694
Bug fixLuciadCPillar
LCP-670
Bug fixLuciadCPillar
LCP-630
Upgrade considerationLuciadCPillar
Upgrade considerationLuciadCPillar
GDAL library and its dependencies have been updated.
GDAL: updated to version3.7.0PROJ: updated to version9.1.1json-c: version0.17, used byGDALlibtiff: version4.5.1, used byGDALnlohmann_json: version3.11.2, used byPROJ
Upgrade considerationLuciadCPillar
EditState of an
IEditHandleIEditHandleIEditHandle has changed. For this purpose, the IEditHandleIEditHandleIEditHandle
interface has been extended with the IEditHandle::addEditStateObserverIEditHandle::addEditStateObserverIEditHandle::addEditStateObserver and the
IEditHandle::removeEditStateObserverIEditHandle::removeEditStateObserverIEditHandle::removeEditStateObserver methods, which must be implemented now.
Upgrade considerationLuciadCPillar
LCP-683
ExpressionFactoryExpressionFactoryExpressionFactory now supports an expression representing a LIKE
operation. You can find it as ExpressionFactory::likeExpressionFactory::likeExpressionFactory::like.
As a consequence the
IExpressionVisitorIExpressionVisitorIExpressionVisitor interface has been extended with the
method IExpressionVisitor::visitLikeIExpressionVisitor::visitLikeIExpressionVisitor::visitLike which must be implemented now.
Upgrade considerationLuciadCPillar
LineStyleLineStyleLineStyle, FillStyleFillStyleFillStyle, MeshStyleMeshStyleMeshStyle, OnPathLabelStyleOnPathLabelStyleOnPathLabelStyle,
PinStylePinStylePinStyle, PointCloudStylePointCloudStylePointCloudStyle, and TextStyleTextStyleTextStyle are now
passed as values instead of shared_ptrs. Setters that used to accept null
values, now accept nullopt instead.
Upgrade considerationLuciadCPillar
LCP-619
Upgrade considerationLuciadCPillar
LCP-557
OpenSSL library has been updated to version 3.0.11.
Upgrade considerationLuciadCPillar
boost library has been updated to version 1.83.0.
Upgrade considerationLuciadCPillar
IFeatureModelIFeatureModelIFeatureModel now has API that allows to save changes to the model using the
getPersistenceManager() method. See FeatureModelPersistenceManagerFeatureModelPersistenceManagerFeatureModelPersistenceManager.
This change breaks existing IFeatureModelIFeatureModelIFeatureModel implementations.
These can be fixed by implementing the new method, and returning null.
Upgrade considerationLuciadCPillar
AsBitmap and the FromBitmap methods on
Luciad.Drawing.Image were removed from the API to improve compatibility
with multiple .NET versions. A class containing these utility methods was added to the sample code
instead: Common.Drawing.ImageUtils.
2023.0
2023.0.04
ImprovementLuciadCPillar
LCP-673
ImprovementLuciadCPillar
LCP-686
CoordinateReferenceProviderCoordinateReferenceProviderCoordinateReferenceProvider now also documents the list of EPSG codes that are not supported.
ImprovementLuciadCPillar
LCP-306
Bug fixLuciadCPillar
LCP-689
Bug fixLuciadCPillar
LCP-685
Map::queryFeaturesMap::queryFeaturesMap::queryFeatures could temporarily return features of a layer that was already removed from
the Map's LayerListLayerListLayerList.
Bug fixLuciadCPillar
LCP-674
IFeatureModelIFeatureModelIFeatureModel with a slow queryBounds implementation now doesn't impact the framerate
of the MapMapMap anymore.
Bug fixLuciadCPillar
LCP-677
Bug fixLuciadCPillar
LCP-667
Bug fixLuciadCPillar
LCP-669
FeatureLayerFeatureLayerFeatureLayer's spatial loading strategy was improved. Previously, certain conditions could cause
excessive memory usage. These conditions include:
- The presence of a
MapScaleMapScaleMapScalewith a small denominator in the layer'sIFeaturePainterIFeaturePainterIFeaturePainterimplementation or in the layer'sFeatureQueryConfigurationFeatureQueryConfigurationFeatureQueryConfiguration - The presence of a large feature in the layer's
IFeatureModelIFeatureModelIFeatureModel - A model update of this large feature in the layer's
IFeatureModelIFeatureModelIFeatureModel - A camera position that is looking towards the horizon (in 3D), or the additional presence of many small features (>50000)
in the
layer's
IFeatureModelIFeatureModelIFeatureModel, concentrated in a small area.
Bug fixLuciadCPillar
LCP-668
Bug fixLuciadCPillar
LCP-672
Bug fixLuciadCPillar
LCP-656
GeodesyCalculationsGeodesyCalculationsGeodesyCalculations could return incorrect results when passing a geodesic coordinate with a latitude outside the
[-90.0, 90.0] interval. This also affected how geometries with latitudes outside the [-90.0, 90.0] interval were painted.
This is now fixed.
2023.0.02
ImprovementLuciadCPillar
LCP-652
FeatureLayerFeatureLayerFeatureLayer.
See FeatureLayer::Builder::loadingStrategyFeatureLayer::Builder::loadingStrategyFeatureLayer::Builder::loadingStrategy for more information.
2023.0.01
ImprovementLuciadCPillar
LCP-649
It is now possible to replace the IFeaturePainterIFeaturePainterIFeaturePainter of a FeatureLayerFeatureLayerFeatureLayer
by a new feature painter instance. This allows you to change the styling for all features in the layer.
Note: There is currently the limitation that the detail levels of the new IFeaturePainterIFeaturePainterIFeaturePainter
must be the same as those of the previous feature painter.
ImprovementLuciadCPillar
LCP-614
GdalModelDecoderGdalModelDecoderGdalModelDecoder now can read single band GeoTIFF floats or signed integers files for which a mask image is used
to indicate the 'no data' values.
ImprovementLuciadCPillar
CoordinateReferenceProviderCoordinateReferenceProviderCoordinateReferenceProvider now supports compound references with an ellipsoidal vertical datum: VERT_DATUM tag with
value 2002 (ellipsoid).
ImprovementLuciadCPillar
CoordinateReferenceProviderCoordinateReferenceProviderCoordinateReferenceProvider now recognizes "North American 1983 CSRS", "North American Datum 1983 CSRS" and variants
as aliases for the "NAD83 Canadian Spatial Reference System" geodetic datum name.
ImprovementLuciadCPillar
CoordinateReferenceProviderCoordinateReferenceProviderCoordinateReferenceProvider now additionally supported the following datums, and coordinate references that make use of it:
- Korean Datum 1985
- Macao 1920
Bug fixLuciadCPillar
LCP-644
Bug fixLuciadCPillar
LCP-636
Bug fixLuciadCPillar
LCP-342
IIcon::createPainterIIcon::createPainterIIcon::createPainter method is now called less often by the MapMapMap.
This is especially beneficial when using the LabelDrawCommand::text method. When used
for features that change very often, this could result in degraded update performance.
Bug fixLuciadCPillar
LCP-642
Bug fixLuciadCPillar
LCP-593
Since the 2022.0 release, QQuickMapObject and QQuickMapRenderer didn't allow creating multiple maps anymore.
This is now possible again.
When you have copies of these classes, you can fix this issue by copying the new versions of these classes from the LuciadCPillar sample code to your application.
Bug fixLuciadCPillar
CoordinateReferenceProviderCoordinateReferenceProviderCoordinateReferenceProvider had incorrect projection parameters. This affected references where the EPSG database
defines parameters in a different unit than meters or degrees:
- EPSG:3359
- EPSG:22391 and EPSG:22392
- EPSG:22780
- EPSG:26191 to EPSG:26195
- EPSG:26814 and EPSG:26815
- EPSG:26819 to EPSG:26822
- EPSG:26825 and EPSG:26826
- EPSG:26830 to EPSG:26833
- EPSG:26836 and EPSG:26837
- EPSG:26841 to EPSG:26844
- EPSG:30491 and EPSG:30492
- EPSG:30791 and EPSG:30792
Bug fixLuciadCPillar
LCP-612
Bug fixLuciadCPillar
LCP-615
FeatureCanvasFeatureCanvasFeatureCanvas draw methods, the Map::queryFeaturesMap::queryFeaturesMap::queryFeatures
method would not always return the top-most feature.
Bug fixLuciadCPillar
LCP-609
AmbientOcclusionEffectAmbientOcclusionEffectAmbientOcclusionEffect: The ambient occlusion effect was sometimes incorrectly applied on
icons.
Bug fixLuciadCPillar
Bug fixLuciadCPillar
LCP-172, LCP-607
- PolylineHandlesProvider
- PolylineRingHandlesProvider
Bug fixLuciadCPillar
LCP-606
Bug fixLuciadCPillar
LCP-588
Bug fixLuciadCPillar
LCP-594
Bug fixLuciadCPillar
LCP-577
2023.0
New featureLuciadCPillar
IIconIIconIIcon from a MilitarySymbolMilitarySymbolMilitarySymbol.
This is particularly useful if you want to get the military symbol as an ImageImageImage.
Please refer to the API documentation of MilitarySymbol::toIconMilitarySymbol::toIconMilitarySymbol::toIcon for more information.
New featureLuciadCPillar
LCP-384
Map::HeightProviderMap::HeightProviderMap::HeightProvider directly from the map to query elevation across all the visible elevation layers for a given pixel.
See related article on the map height provider for more information.
New featureLuciadCPillar
GdalModelDecoderGdalModelDecoderGdalModelDecoder now supports decoding single band GeoTIFF files using either
32-bit floats or signed integers. Such GeoTIFF data files are interpreted as elevation data.
New featureLuciadCPillar
RasterModelHeightProviderRasterModelHeightProviderRasterModelHeightProvider class.
See
related article on how to get height data from a raster model for more information.
New featureLuciadCPillar
LCP-35
- The Map can now correctly visualize non-world covering elevation data sets correctly. In previous versions it clips away all other data outside the extents of the elevation data set. This is not the case anymore: all data outside the elevation data's extent is now painted at elevation 0.
- The map can now visualize multiple elevation data sets at the same time. In previous versions only the top-most elevation layer is used to generate terrain. Now all layers that contain elevation data are used to generate terrain.
New featureLuciadCPillar
- The DTED Developer's Guide.
- The reference documentation of
DtedModelDecoderDtedModelDecoderDtedModelDecoderon how to decode DTED.
New featureLuciadCPillar
HttpClientHttpClientHttpClientHttpRequestHttpRequestHttpRequestHttpResponseHttpResponseHttpResponse
IHttpClientIHttpClientIHttpClient and plugging it into the model decoder
options, or by directly using the HttpClientHttpClientHttpClient class after having properly configured it.
More information can be found in the article
how to customize HTTP requests when loading data.
Custom HTTP data loading is supported by the following decoders:
ImprovementLuciadCPillar
LCP-583
ImprovementLuciadCPillar
PointCloudStyle::Builder::pointSizeAdaptivePointCloudStyle::Builder::pointSizeAdaptivePointCloudStyle::Builder::pointSizeAdaptive).
Adaptive point size is now the recommended setting for all point clouds.
ImprovementLuciadCPillar
LCP-551
ImprovementLuciadCPillar
LCP-258
Map::ViewMapTransformation::mapToViewMap::ViewMapTransformation::mapToViewMap::ViewMapTransformation::mapToView on when an exception
can be thrown by the method.
ImprovementLuciadCPillar
MultilevelTiledRasterModelBuilderMultilevelTiledRasterModelBuilderMultilevelTiledRasterModelBuilder now allows to create levels for which the top-left
corner to the level bounds is not the same for all levels.
ImprovementLuciadCPillar
ImprovementLuciadCPillar
LCP-386
GeoPackageModelDecoderGeoPackageModelDecoderGeoPackageModelDecoder now correctly sets a no-data value for elevation models,
allowing the Map to detect locations where no elevation is available.
ImprovementLuciadCPillar
MultilevelTiledRasterModelBuilderMultilevelTiledRasterModelBuilderMultilevelTiledRasterModelBuilder
and QuadTreeRasterModelBuilderQuadTreeRasterModelBuilderQuadTreeRasterModelBuilder. This no-data value can be used to specify that no
elevation data is available at certain sample locations.
Bug fixLuciadCPillar
Upgrade considerationLuciadCPillar
Upgrade considerationLuciadCPillar
Upgrade considerationLuciadCPillar
Upgrade considerationLuciadCPillar
MouseCursor::Default and Priority::Default
constants were renamed to MouseCursor::DefaultCursor and
Priority::Normal.
Upgrade considerationLuciadCPillar
FeatureStateFeatureStateFeatureStatePriorityPriorityPriorityGeoPackageTableMetadataGeoPackageTableMetadataGeoPackageTableMetadataLayerLayerLayerFeatureLayerFeatureLayerFeatureLayerTileSet3DLayerTileSet3DLayerTileSet3DLayerMouseCursorMouseCursorMouseCursorKeyCodeKeyCodeKeyCodeMouseButtonMouseButtonMouseButtonModifierKeysModifierKeysModifierKeysMapScaleMapScaleMapScale
2022.1
2022.1.08
ImprovementLuciadCPillar
ImprovementLuciadCPillar
LCP-586
Loaded method.
This could for example happen when integrating the WPF map control within a TabControl
and switching between the tabs.
Bug fixLuciadCPillar
LCP-587
2022.1.07
ImprovementLuciadCPillar
LCP-574
IIconIIconIIcon on the Map, the ImageImageImage instances painted by the icon do not have to be
alpha-premultiplied anymore. This applies to the following calls:
FeatureCanvas::IconDrawCommand::iconFeatureCanvas::IconDrawCommand::iconFeatureCanvas::IconDrawCommand::iconFeatureCanvas::LabelDrawCommand::iconFeatureCanvas::LabelDrawCommand::iconFeatureCanvas::LabelDrawCommand::iconFillStyle::Builder::iconFillStyle::Builder::iconFillStyle::Builder::icon
ImageImageImage resulted in an exception while rendering. Now the feature is painted correctly.
Bug fixLuciadCPillar
LCP-573
Bug fixLuciadCPillar
LCP-573, LCP-312
Bug fixLuciadCPillar
LCP-576
Bug fixLuciadCPillar
LCP-575
2022.1.06
Bug fixLuciadCPillar
LCP-569
Bug fixLuciadCPillar
LCP-567
Bug fixLuciadCPillar
2022.1.05
Bug fixLuciadCPillar
LCP-488, LCP-562
MouseGestureRecognizerMouseGestureRecognizerMouseGestureRecognizer sending
IInputEventIInputEventIInputEvent instances to its IInputEventCallbackIInputEventCallbackIInputEventCallback.
2022.1.04
ImprovementLuciadCPillar
LCP-537, LCP-539
FeatureCanvas::IconDrawCommand::scaleFeatureCanvas::IconDrawCommand::scaleFeatureCanvas::IconDrawCommand::scaleFeatureCanvas::IconDrawCommand::sizeFeatureCanvas::IconDrawCommand::sizeFeatureCanvas::IconDrawCommand::sizeFeatureCanvas::TextDrawCommand::scaleFeatureCanvas::TextDrawCommand::scaleFeatureCanvas::TextDrawCommand::scale
ImprovementLuciadCPillar
LCP-540
LineStyle::Builder::inMetersLineStyle::Builder::inMetersLineStyle::Builder::inMetersFeatureCanvas::IconDrawCommand::inMetersFeatureCanvas::IconDrawCommand::inMetersFeatureCanvas::IconDrawCommand::inMetersFeatureCanvas::TextDrawCommand::inMetersFeatureCanvas::TextDrawCommand::inMetersFeatureCanvas::TextDrawCommand::inMeters
ImprovementLuciadCPillar
LCP-541
FeatureCanvas::drawTextFeatureCanvas::drawTextFeatureCanvas::drawText.
ImprovementLuciadCPillar
LCP-552
MapNavigator::PanAction::fromViewLocationMapNavigator::PanAction::fromViewLocationMapNavigator::PanAction::fromViewLocation method was added. This method accepts view coordinates, so it is targeted towards
event-based panning. Additionally, when using this method panning will be more limited when using a point near the horizon.
This is done to prevent the
camera from making very large changes. When using the MapNavigator::PanAction::fromMapNavigator::PanAction::fromMapNavigator::PanAction::from method, panning is not limited.
Bug fixLuciadCPillar
LCP-542
FeatureCanvasFeatureCanvasFeatureCanvas: when painting an icon with an orientation and a RelativePositionRelativePositionRelativePosition, the position's
offsets were not correctly rotated along when rotating the map.
Bug fixLuciadCPillar
LCP-552
MapNavigator::newPanActionMapNavigator::newPanActionMapNavigator::newPanAction: When panning to a location at a far away distance, the camera would end up somewhere in between
the start and destination of the pan operation instead of on the destination.
Bug fixLuciadCPillar
LCP-549
MultilevelTiledRasterModelBuilderMultilevelTiledRasterModelBuilderMultilevelTiledRasterModelBuilder when working with non normalized lon-lat bounds
Bug fixLuciadCPillar
LCP-538
2022.1.03
Bug fixLuciadCPillar
LCP-531, LCP-533
RasterLayerRasterLayerRasterLayer: part of the imagery could be clipped for certain camera positions
when elevation data was loaded.
Bug fixLuciadCPillar
LCP-536
Bug fixLuciadCPillar
LCP-374
2022.1.02
Bug fixLuciadCPillar
LCP-530
ZoomEventHandlerZoomEventHandlerZoomEventHandler would throw an exception when trying to zoom before the map has been painted.
Bug fixLuciadCPillar
LCP-527
CreatorCreatorCreator for a layer that is configured with an IFeaturePainterIFeaturePainterIFeaturePainter that configures
detail level scales, a crash would occur when calling FeaturePainterContext::getDetailLevelFeaturePainterContext::getDetailLevelFeaturePainterContext::getDetailLevel. This is now fixed.
2022.1.01
ImprovementLuciadCPillar
LCP-512
ImprovementLuciadCPillar
LCP-437
ImprovementLuciadCPillar
LCP-392
ImprovementLuciadCPillar
LCP-437
Bug fixLuciadCPillar
LCP-521
IMultilevelTiledRasterDataRetrieverCallback::onImageAvailableIMultilevelTiledRasterDataRetrieverCallback::onImageAvailableIMultilevelTiledRasterDataRetrieverCallback::onImageAvailable
did not correctly take the alpha pre-multiplication into account.
This resulted in the color to be treated as an opaque color.
Bug fixLuciadCPillar
LCP-89
GeodesyCalculations::distance3DGeodesyCalculations::distance3DGeodesyCalculations::distance3D method didn't return correct results when using a geodetic reference.
Bug fixLuciadCPillar
LCP-349, LCP-436
Bug fixLuciadCPillar
LCP-442
2022.1
New featureLuciadCPillar
LuciadCPillar for Android allows you to develop GPU accelerated geospatial situational awareness applications targeted to run on Android mobile devices. LuciadCPillar for Android is an SDK that supports both Kotlin and Java development. It is feature equivalent with LuciadCPillar for desktop.
To get started, consult the product documentation and select the Android profile at the top right of the page. The product documentation includes installation guides, a Java API reference and a set of ready-to-run kotlin samples that can be installed on your mobile device from Android studio.
New featureLuciadCPillar
You can now enable GPU texture compression on TileSet3DLayerTileSet3DLayerTileSet3DLayer 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.
New featureLuciadCPillar
GraphicsEffectsGraphicsEffectsGraphicsEffects, AmbientOcclusionEffectAmbientOcclusionEffectAmbientOcclusionEffect and
EyeDomeLightingEffectEyeDomeLightingEffectEyeDomeLightingEffect for details.
When enabled, they are applied on all the data on the map.
New featureLuciadCPillar
GdalModelDecoderGdalModelDecoderGdalModelDecoder now supports decoding of 8 bit indexed color GeoTIFF data.
New featureLuciadCPillar
MultilevelTiledRasterModelBuilderMultilevelTiledRasterModelBuilderMultilevelTiledRasterModelBuilder and QuadTreeRasterModelBuilderQuadTreeRasterModelBuilderQuadTreeRasterModelBuilder
classes.
This for example allows you to implement your own raster format, or position a single image on the map.
The article
introduction to raster models
provides more information on these classes.
You can indicate that your custom raster data may change.
To enable this you need to call
MultilevelTiledRasterModelBuilder::enableInvalidationMultilevelTiledRasterModelBuilder::enableInvalidationMultilevelTiledRasterModelBuilder::enableInvalidation
or
QuadTreeRasterModelBuilder::enableInvalidationQuadTreeRasterModelBuilder::enableInvalidationQuadTreeRasterModelBuilder::enableInvalidation.
This results in the creation of an IRasterModelIRasterModelIRasterModel which returns true
for the method IRasterModel::canInvalidateIRasterModel::canInvalidateIRasterModel::canInvalidate and on which you can call
IRasterModel::invalidateIRasterModel::invalidateIRasterModel::invalidate.
Invalidating the raster instructs LuciadCPillar to reload the data from the model and update the view accordingly.
ImprovementLuciadCPillar
GeometryFactoryGeometryFactoryGeometryFactory now also has a createPoint method that takes a CoordinateCoordinateCoordinate as input.
ImprovementLuciadCPillar
ImprovementLuciadCPillar
CoordinateReferenceProviderCoordinateReferenceProviderCoordinateReferenceProvider can now parse more WKT strings that do not contain a TOWGS84 in its datum.
ImprovementLuciadCPillar
RasterLayerRasterLayerRasterLayer now respects the display scale, which results in better performance
on HiDPI screens.
ImprovementLuciadCPillar
LCP-19, LCP-21, LCP-22, LCP-25, LCP-65, LCP-290, LCP-290, LCP-343
- Data starts appearing on the screen up to 10 times faster right after adding a vector layer or after zooming in to a different detail level.
- Data loading throughput is up to 2 times larger.
- Data appears and disappears up to 5-10 times faster while navigating.
- The map's frame rate is higher while vector data is loaded. Navigation now remains smooth at all times during loading.
ImprovementLuciadCPillar
TouchGestureRecognizerTouchGestureRecognizerTouchGestureRecognizer now more reliably makes the distinction between two-finger touch drag evens and pinch-rotate touch events.
ImprovementLuciadCPillar
Ogc3DTilesModelDecoder::decodeOgc3DTilesModelDecoder::decodeOgc3DTilesModelDecoder::decode has been overloaded so that you can now configure
Ogc3DTilesModelDecoder::OptionsOgc3DTilesModelDecoder::OptionsOgc3DTilesModelDecoder::Options for the decoding of OGC 3D tiles data. These options allow
you to configure a custom IDataLoaderIDataLoaderIDataLoader to fetch the OGC 3D Tiles resources,
in case the default data loading from a server or the file system is not adequate for your use case.
HspcModelDecoder::decodeHspcModelDecoder::decodeHspcModelDecoder::decode also supports this.
ImprovementLuciadCPillar
LCP-415
projection-wkt property).
Before, only HSPC references expressed with an EPSG code (projection-epsg property) were supported.
ImprovementLuciadCPillar
LCP-19, LCP-21, LCP-22, LCP-25, LCP-343
ImprovementLuciadCPillar
CoordinateReferenceProviderCoordinateReferenceProviderCoordinateReferenceProvider now supports EPSG references based on the IG05/12 Intermediate datum:
- EPSG:6988
- EPSG:6989
- EPSG:6990
- EPSG:6991
ImprovementLuciadCPillar
LCP-75
GeoPackageModelDecoderGeoPackageModelDecoderGeoPackageModelDecoder: the decoder now supports decoding geometries with an optional
elevation (Z) value.
ImprovementLuciadCPillar
LCP-338
ImprovementLuciadCPillar
Bug fixLuciadCPillar
GdalModelDecoderGdalModelDecoderGdalModelDecoder: some files would cause a crash while a feature query is performed when no geometry could be found for a feature.
A warning is logged now instead.
Bug fixLuciadCPillar
Bug fixLuciadCPillar
Bug fixLuciadCPillar
Luciad.Symbology.Military.Standards
and
Luciad.Symbology.MilitarySymbologyNode.SymbolTypes
have been removed from the C# API. In C#, methods to obtain a list of possible values and a string representation
are by convention available on the enumeration type itself.
Bug fixLuciadCPillar
Bug fixLuciadCPillar
LCP-403, LCP-404
Bug fixLuciadCPillar
LCP-431
ScreenInfo, which created a device context without deleting it afterwards. If you
are using this class in your own application, you will need to copy the new version of this class into your
application as well.
Bug fixLuciadCPillar
LCP-434
Bug fixLuciadCPillar
LCP-408
Bug fixLuciadCPillar
Bug fixLuciadCPillar
Bug fixLuciadCPillar
PointEditHandle::addOnClickActionPointEditHandle::addOnClickActionPointEditHandle::addOnClickAction allowed the handle to execute actions for TouchLongPressEventTouchLongPressEventTouchLongPressEvent events.
This has now been fixed. To allow configuring long press actions on a handle, the PointEditHandle::addOnTouchLongPressActionPointEditHandle::addOnTouchLongPressActionPointEditHandle::addOnTouchLongPressAction
method has been added.
Bug fixLuciadCPillar
LCP-400
Bug fixLuciadCPillar
LCP-399
Bug fixLuciadCPillar
LCP-416
RasterLayerRasterLayerRasterLayer: 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 fixLuciadCPillar
Map::getAnimationManagerMap::getAnimationManagerMap::getAnimationManager. This could for example
lead to the camera jumping to an incorrect location when zooming in and out in quick succession using
MapNavigator::ZoomActionMapNavigator::ZoomActionMapNavigator::ZoomAction.
Bug fixLuciadCPillar
LCP-418
Bug fixLuciadCPillar
Bug fixLuciadCPillar
MapNavigatorMapNavigatorMapNavigator that could potentially interrupt ongoing animations,
and in rare cases could lead to a crash.
Bug fixLuciadCPillar
LCP-433
Bug fixLuciadCPillar
LCP-402
Bug fixLuciadCPillar
LCP-423
Upgrade considerationLuciadCPillar
MapNavigator::getAnimationKey was removed. In order to cancel navigate actions that were initiated by
MapNavigatorMapNavigatorMapNavigator, you can now use the MapNavigator::cancelMapNavigator::cancelMapNavigator::cancel method instead. This method
does not only cancel animations, but also other non-animated MapNavigatorMapNavigatorMapNavigator actions.
Upgrade considerationLuciadCPillar
PanAction::to and ZoomAction::to have been renamed to
PanAction::toLocation and ZoomAction::toLocation respectively.This prevents a naming clash with the Kotlin
to infix.
Upgrade considerationLuciadCPillar
libcurl: updated to version7.86.0openssl: updated to version1.1.1szlib: updated to version1.2.13
Upgrade considerationLuciadCPillar
TileSet3DLayerTileSet3DLayerTileSet3DLayer uses texture compression by default.
This has the advantage that less GPU memory is used.
In case artifacts would be noticeable in textures on a OGC 3D tiles mesh, you can disable texture
compression via TileSet3DLayer::Builder::textureCompressionEnabledTileSet3DLayer::Builder::textureCompressionEnabledTileSet3DLayer::Builder::textureCompressionEnabled.
Upgrade considerationLuciadCPillar
androidx namespace).
Upgrade considerationLuciadCPillar
@NotNull and @Nullable annotations to the
LuciadCPillar for Android API, so that it is more convenient to use when working in Kotlin.
Upgrade considerationLuciadCPillar
stb and goofy libraries in order to
support OGC 3D Tiles texture compression.
Upgrade considerationLuciadCPillar
Upgrade considerationLuciadCPillar
GDAL library and its dependencies have been updated.
GDAL: updated to version3.4.3PROJ: updated to version9.0.1SQLite3: updated to version3.38.5nlohmann_json: version3.10.5, used byPROJlibgeotiff: version1.7.1, used byGDALjson-c: version0.15, used byGDAL
Upgrade considerationLuciadCPillar
Image.Create factory method taking a byte[] was removed from the
C# API. The factory method taking a ByteBufferByteBufferByteBuffer should be used instead.
Upgrade considerationLuciadCPillar
MemoryBuffer class was removed from the API. Use cases that used to be covered by
MemoryBuffer are now covered by the new ByteBufferByteBufferByteBuffer class.
2022.0
2022.0
New featureLuciadCPillar
- The updated articles regarding Interacting with the Map.
- The LuciadCPillar Qt integration Guide.
New featureLuciadCPillar
- The OGC 3D Tiles Developer's Guide.
- The HSPC Developer's Guide.
- The reference documentation of
Ogc3DTilesModelDecoderOgc3DTilesModelDecoderOgc3DTilesModelDecoderon how to decode OGC 3D Tiles. - The reference documentation of
HspcModelDecoderHspcModelDecoderHspcModelDecoderon how to decode HSPC (Hexagon Smart Point Cloud) files.
New featureLuciadCPillar
The CPillar map now supports high DPI rendering. This means that fonts, icons and other map elements are automatically resized in proportion to the display scale configured in the operating system. This also means that map scale calculations use the configured DPI to get a correct interpretation.
When integrating the CPillar map in a UI framework the DPI and the display scale must be configured
on the Map::RendererMap::RendererMap::Renderer.
You can read more on this in the article on
support for high DPI displays.
The article on
integration within Qt
provides details on how this is done for the Qt UI toolkit.
The API allows to provide icons for multiple resolutions such that the CPillar map can use the best applicable
for your screen setup. For this purpose, the IIconIIconIIcon class was modified to allow painting
an icon in different resolutions.
ImprovementLuciadCPillar
LCP-90
ImprovementLuciadCPillar
MouseCursorMouseCursorMouseCursor was added to allow hiding the map cursor.
ImprovementLuciadCPillar
ImprovementLuciadCPillar
LCP-214, LCP-216
overrideColor in MilitarySymbolStyle::BuilderMilitarySymbolStyle::BuilderMilitarySymbolStyle::Builder.
This can be used to highlight a symbol. The symbology sample now shows how to do this when selecting tactical symbols.
ImprovementLuciadCPillar
Map::queryFeatures can now be called from the UI thread and passes its result to its callback synchronously.
ImprovementLuciadCPillar
ImprovementLuciadCPillar
PanEventHandlerPanEventHandlerPanEventHandler or RotateEventHandlerRotateEventHandlerRotateEventHandler are now returning an EventStatusEventStatusEventStatus
indicating if they consumed the event or not.
ImprovementLuciadCPillar
LCP-55
ImprovementLuciadCPillar
CoordinateReferenceCoordinateReferenceCoordinateReference instances are equal with respect to
transforming using Transformation::isIdentityTransformation::isIdentityTransformation::isIdentity. The result of this check is different from
the regular equality operator that can be found on CoordinateReferenceCoordinateReferenceCoordinateReference: it only uses
the data that is used during transformations, and not at the references metadata.
ImprovementLuciadCPillar
LCP-176
GeoPackageModelDecoderGeoPackageModelDecoderGeoPackageModelDecoder now supports elevation data encoded as TIFF.
Bug fixLuciadCPillar
CoordinateReferenceCoordinateReferenceCoordinateReference equality and hash implementations are now implemented more
strictly. Previously these methods used the identifier equality and hash, which could lead to incorrect
false positives.
Upgrade considerationLuciadCPillar
fast_float library version 3.4.0 has been added.
This library is used to parse floating point values from strings.
Upgrade considerationLuciadCPillar
LCP-361
zlib library has been updated to v2.1.12.
Upgrade considerationLuciadCPillar
OpenGL 4.2 instead of OpenGL 4.1.
Upgrade considerationLuciadCPillar
draco library.
Upgrade considerationLuciadCPillar
myVRPointCloud, jcsoncpp,
pdqsort, and zstd to support the Hexagon Smart Point Cloud (HSPC)
format.
Upgrade considerationLuciadCPillar
IIconIIconIIcon interface was modified to add support for painting the icon in different
resolutions, depending on the display scale of your screen. To this purpose, a new interface was added:
IIconPainterIIconPainterIIconPainter. The IIcon::toImage method was replaced by
the new IIcon::createPainterIIcon::createPainterIIcon::createPainter method. The getWidth, getHeight, getAnchorX and getAnchorY
methods were moved to this new IIconPainterIIconPainterIIconPainter interface.
Upgrade considerationLuciadCPillar
ObservableXxx Value property has been replaced by a getter and a setter.
Upgrade considerationLuciadCPillar
Observable<Xxx> everywhere instead of
ObservableXxx. This can cause compile errors that can be resolved by referring
to Observable<Xxx> in the code instead.
Upgrade considerationLuciadCPillar
IInputEventIInputEventIInputEvents and in particular, gesture recognition, have been refactored.
See the updated articles regarding interacting with the Map through a controller
and integration within Qt for more information.
-
Mouse input events related types are now declared in the
luciad/input/mouse/MouseEvents.hheader. -
The
GestureRecognizerclass has been replaced by dedicatedMouseGestureRecognizerMouseGestureRecognizerMouseGestureRecognizerandTouchGestureRecognizerTouchGestureRecognizerTouchGestureRecognizerclasses, which handle mouse based and touch based gestures, respectively. -
The
MouseGestureRecognizerMouseGestureRecognizerMouseGestureRecognizercan be included through theluciad/input/mouse/MouseGestureRecognizer.hheader. -
The
TouchGestureRecognizerTouchGestureRecognizerTouchGestureRecognizercan be included through theluciad/input/touch/TouchGestureRecognizer.hheader.
Upgrade considerationLuciadCPillar
Upgrade considerationLuciadCPillar
ms-gsl.
Upgrade considerationLuciadCPillar
concurrentqueue library has been updated to v1.0.3.
Upgrade considerationLuciadCPillar
libtiff to support GeoPackage files
containing TIFF encoded elevation data.
Upgrade considerationLuciadCPillar
Upgrade considerationLuciadCPillar
2021.1
2021.1.05
ImprovementLuciadCPillar
LCD-12276
CoordinateReferenceProviderCoordinateReferenceProviderCoordinateReferenceProvider now supports WKT strings that contain a "Local" projection
parameter, which corresponds to an orthographic projection.
Bug fixLuciadCPillar
LCP-371, LCP-372
- Well Known Text (WKT) reference
- WMS capabilities
- GeoTIFF
Bug fixLuciadCPillar
LCP-365
Bug fixLuciadCPillar
LCP-352
Bug fixLuciadCPillar
LCP-347
2021.1.04
Bug fixLuciadCPillar
LCP-358
Bug fixLuciadCPillar
LCP-357
Map::IRendererCallbackMap::IRendererCallbackMap::IRendererCallback in a WinForms application.
Bug fixLuciadCPillar
LCP-350
2021.1.03
ImprovementLuciadCPillar
LCP-343
FeatureLayerFeatureLayerFeatureLayer
now requires less processing time, and that it appears faster on the screen.
Bug fixLuciadCPillar
LCP-346
Bug fixLuciadCPillar
LCP-308
FeatureQueryConfiguration::Builder::loadNothingForNonDefinedScales
flag set
in addition to at least one map scale condition.
2021.1.02
Bug fixLuciadCPillar
LCP-345
KeyNotFoundException when using the default logging.
2021.1.01
Bug fixLuciadCPillar
LCP-329
Bug fixLuciadCPillar
LCD-12108
CircleByCenterPointCircleByCenterPointCircleByCenterPoint
and CircularArcByCenterPointCircularArcByCenterPointCircularArcByCenterPoint are now more accurate. Before, the bounds were too small in some cases.
Bug fixLuciadCPillar
LCD-12169
- EPSG:2065
- EPSG:5513
- EPSG:8352
2021.1
New featureLuciadCPillar
CameraCameraCamera
class, and Map::setCameraMap::setCameraMap::setCamera for more information.
ImprovementLuciadCPillar
LCP-333
image/png
but in fact returns a JPEG image this is detected.
A warning is logged about the inconsistency but the image is loaded for visualization.
ImprovementLuciadCPillar
LCP-323
ImprovementLuciadCPillar
LCP-314
Map::setBackgroundColorMap::setBackgroundColorMap::setBackgroundColor method was added.
The background color is used if no imagery layers are present (3D and 2D).
In 3D, the background color is also used for the space.
ImprovementLuciadCPillar
LCP-317
MapNavigator::RotateActionMapNavigator::RotateActionMapNavigator::RotateAction
only had methods to set delta values for the camera rotation. It
is now also possible to set target values for the camera rotation. This means that you can now specify the rotations
the camera will have at the end of the rotate action.
ImprovementLuciadCPillar
LCP-200
ImprovementLuciadCPillar
Map::Renderer::projectPointOnTerrainMap::Renderer::projectPointOnTerrainMap::Renderer::projectPointOnTerrain method was added. This method calculates a point on
the terrain or ellipsoid, perpendicular to a given coordinate. It can for example be used to implement your own
above terrain camera constraint.
ImprovementLuciadCPillar
MapNavigatorMapNavigatorMapNavigator
now has methods to enable, disable or configure map navigation constraints:
- Above constraint: to keep the camera above the terrain in 3D
- Pitch constraint: to limit the camera tilt in 3D
- Bounds constraint: to keep the camera inside a defined bounds in 2D
- Scale constraint: to prevent the camera from zooming in or out too far in 2D
ImprovementLuciadCPillar
ImprovementLuciadCPillar
EnvironmentEnvironmentEnvironment after it has been cleaned up.
Bug fixLuciadCPillar
Bug fixLuciadCPillar
Map::ViewMapTransformation::mapToViewMap::ViewMapTransformation::mapToViewMap::ViewMapTransformation::mapToView could return a nullopt result
when transforming map points with a z-value different from 0. The fix for this bug also fixes a problem during
PolylinePolylinePolyline
editing: when trying to add a point to the start or end of the polyline,
PolylineHandlesProviderPolylineHandlesProviderPolylineHandlesProvider
always chose to add it to the end.
Bug fixLuciadCPillar
LCP-325
Bug fixLuciadCPillar
LCP-315
MapNavigator::ZoomActionMapNavigator::ZoomActionMapNavigator::ZoomAction is used on some WMS/WMTS layers in 2D.
Bug fixLuciadCPillar
LCP-303
Bug fixLuciadCPillar
LCP-57
Upgrade considerationLuciadCPillar
Qt5.15.2.
Upgrade considerationLuciadCPillar
MapNavigator::RotateAction::deltaPitchMapNavigator::RotateAction::deltaPitchMapNavigator::RotateAction::deltaPitch
now accepts a double value instead of an
AngleAngleAngle. This is more consistent with the rest of the API, and it avoids incorrect
normalization of the passed pitch value.
Upgrade considerationLuciadCPillar
glu library has been updated to version 1.3+2.
Upgrade considerationLuciadCPillar
freetype library has been updated to version 2.10.4.
Upgrade considerationLuciadCPillar
libpng library has been updated to version 1.6.37.
Upgrade considerationLuciadCPillar
curl library has been updated to version 7.77.0.
The openssl library has been updated to version 1.1.1k.
Upgrade considerationLuciadCPillar
MapNavigator::create factory method was removed, and replaced by the new
Map::getMapNavigatorMap::getMapNavigatorMap::getMapNavigator
method. The advantage of using a single MapNavigator instance,
is that it can now store configuration, like constraint settings.
Upgrade considerationLuciadCPillar
spdlog library, used in the samples, has been updated to version
1.9.2.
The fmt library, used by spdlog has been updated to
version 8.0.1.
Upgrade considerationLuciadCPillar
libjpeg library has been updated to version 9d.
Upgrade considerationLuciadCPillar
expected-lite library has been updated to version 0.5.0.
2021.0
2021.0.01
Bug fixLuciadCPillar
LCP-324
GetMap request needed to use the
CRS EPSG:4326. The visualization of the WMS layer was wrong.
2021.0
New featureLuciadCPillar
FeatureCanvas::LabelDrawCommand::onPathFeatureCanvas::LabelDrawCommand::onPathFeatureCanvas::LabelDrawCommand::onPath using an OnPathLabelStyleOnPathLabelStyleOnPathLabelStyle
argument.
ImprovementLuciadCPillar
LCP-282
TextBlockTextBlockTextBlock
with a TextBlock::BuilderTextBlock::BuilderTextBlock::Builder and forward it to FeatureCanvas::LabelDrawCommand::textFeatureCanvas::LabelDrawCommand::textFeatureCanvas::LabelDrawCommand::text.
ImprovementLuciadCPillar
LCP-301
Feature.Builder.Value is now faster.
ImprovementLuciadCPillar
LCP-301
FeatureLayerFeatureLayerFeatureLayer instances without any labels.
ImprovementLuciadCPillar
FeatureCanvas::LabelDrawCommand::labelGroupFeatureCanvas::LabelDrawCommand::labelGroupFeatureCanvas::LabelDrawCommand::labelGroup with LabelGroup::NoDeclutterLabelGroup::NoDeclutterLabelGroup::NoDeclutter
as value.
ImprovementLuciadCPillar
LCP-295
ImprovementLuciadCPillar
PathLabelPosition::PortPathLabelPosition::PortPathLabelPosition::Port and PathLabelPosition::StarboardPathLabelPosition::StarboardPathLabelPosition::Starboard can be used with both
FeatureCanvas::LabelDrawCommand::onPathFeatureCanvas::LabelDrawCommand::onPathFeatureCanvas::LabelDrawCommand::onPath methods.
ImprovementLuciadCPillar
LCP-145
Bug fixLuciadCPillar
LCP-302
FeatureCanvas::LabelDrawCommand::anchorDrapedFeatureCanvas::LabelDrawCommand::anchorDrapedFeatureCanvas::LabelDrawCommand::anchorDraped
as true are now displayed correctly on elevated terrain.
Bug fixLuciadCPillar
LCP-299
SelectEventHandlerSelectEventHandlerSelectEventHandler and HoverEventHandlerHoverEventHandlerHoverEventHandler's setMargin methods are now correctly taken into account.
Bug fixLuciadCPillar
LCP-297
Bug fixLuciadCPillar
LCP-283
Bug fixLuciadCPillar
LCP-207
Upgrade considerationLuciadCPillar
TextStyleTextStyleTextStyle class now doesn't contain verticalSpacing and horizontalAlignment properties
anymore. You can now specify these properties in an alternative way:
- directly pass a horizontalAlignment to the
FeatureCanvas::LabelDrawCommand::textFeatureCanvas::LabelDrawCommand::textFeatureCanvas::LabelDrawCommand::textmethod that accepts a vector of strings - use the
FeatureCanvas::LabelDrawCommand::textFeatureCanvas::LabelDrawCommand::textFeatureCanvas::LabelDrawCommand::textmethod that accepts aTextBlockTextBlockTextBlock.
Upgrade considerationLuciadCPillar
Upgrade considerationLuciadCPillar
PathLabelPositionPathLabelPositionPathLabelPosition header file was moved from the luciad/layers/features folder to
the luciad/layers/styles folder. In the C# API, the namespace was changed from from Luciad.Layers.Features to
Luciad.Layers.Styles.
2020.2
2020.2
New featureLuciadCPillar
WmsCapabilitiesWmsCapabilitiesWmsCapabilities and WmsModelDecoderWmsModelDecoderWmsModelDecoderis explained
in the article on connecting to a WMS service.
You can use the data formats sample to connect to Web Map Services.
New featureLuciadCPillar
- add labels that are attached a point
- add labels that use the same orientation as the line they are attached to
- add labels inside an area
- labels are decluttered to avoid overlap
- labels are always painted above all the other content on the map
- a pin can be drawn to show where the label is attached to its feature
FeatureCanvas::LabelDrawCommandFeatureCanvas::LabelDrawCommandFeatureCanvas::LabelDrawCommand for more details.
The labeling functionality is demonstrated in the label sample.
New featureLuciadCPillar
GdalModelDecoderGdalModelDecoderGdalModelDecoder in this
article.
Decoding of SHP data files is available in the data formats sample.
ImprovementLuciadCPillar
TextStyle::Builder::fontNameTextStyle::Builder::fontNameTextStyle::Builder::fontName. TextStyles
can be forwarded to FeatureCanvas::TextDrawCommandFeatureCanvas::TextDrawCommandFeatureCanvas::TextDrawCommand and FeatureCanvas::LabelDrawCommandFeatureCanvas::LabelDrawCommandFeatureCanvas::LabelDrawCommand.
ImprovementLuciadCPillar
LCP-267
ImprovementLuciadCPillar
LCD-11798
ImprovementLuciadCPillar
LCP-264
CoordinateReferenceProviderCoordinateReferenceProviderCoordinateReferenceProvider now uses more precise parameters to transform from S-JTSK to WGS 84.
This affects the following codes:
- EPSG:2065
- EPSG:4156
- EPSG:4818
- EPSG:5221
- EPSG:5513
- EPSG:5514
ImprovementLuciadCPillar
LCP-257
CoordinateReferenceProviderCoordinateReferenceProviderCoordinateReferenceProvider now supports "Australian 1984" (and variants) as alias for AGD84
for WKT strings.
ImprovementLuciadCPillar
LCP-159
ImprovementLuciadCPillar
FeatureModelBuilder::buildFeatureModelBuilder::buildFeatureModelBuilder::build now allows the creation of an empty model.
ImprovementLuciadCPillar
LCP-204
CoordinateReferenceProviderCoordinateReferenceProviderCoordinateReferenceProvider 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
Bug fixLuciadCPillar
LCP-274
Bug fixLuciadCPillar
LCP-260
MapNavigatorMapNavigatorMapNavigator now check the validity of their parameters:
- The
toparameter for aMapNavigator::ZoomActionMapNavigator::ZoomActionMapNavigator::ZoomActionmust be in the map reference or an exception is thrown. - The
fromparameter for aMapNavigator::PanActionMapNavigator::PanActionMapNavigator::PanActionmust be in the map reference or an exception is thrown. - The
centerparameter for aMapNavigator::RotateActionMapNavigator::RotateActionMapNavigator::RotateActionmust be in the map reference or an exception is thrown.
Bug fixLuciadCPillar
LCP-259
MapNavigator::ZoomActionMapNavigator::ZoomActionMapNavigator::ZoomAction is used with a target scale and without animation.
Bug fixLuciadCPillar
LCP-269
Bug fixLuciadCPillar
LCP-151
Bug fixLuciadCPillar
LCP-263
Bug fixLuciadCPillar
Bug fixLuciadCPillar
LCP-252, LCP-253
Bug fixLuciadCPillar
Bug fixLuciadCPillar
LCP-254
Bug fixLuciadCPillar
LCP-278
CoordinateReferenceParser didn't always correctly take a non-zero prime meridian and a
different angular unit into account for WKT and EPSG strings. This could result in:
- an incorrect prime meridian shift
- a prime meridian shift that was applied twice
- incorrect projection parameters
Bug fixLuciadCPillar
LCP-257
CoordinateReferenceProviderCoordinateReferenceProviderCoordinateReferenceProvider: WKT strings using the NAD83 (National Spatial Reference System 2011)
datum and without TOWGS84 parameter were incorrectly formatted as an EPSG code using an other NAD83 version.
Bug fixLuciadCPillar
LCP-169
Bug fixLuciadCPillar
ExpressionValue::getFloatValueExpressionValue::getFloatValueExpressionValue::getFloatValue now correctly returns a float
instead of a a double.
Bug fixLuciadCPillar
LCP-148
Bug fixLuciadCPillar
LCP-167
Bug fixLuciadCPillar
LCP-256
HoverEventHandlerHoverEventHandlerHoverEventHandler
or SelectEventHandlerSelectEventHandlerSelectEventHandler.
Bug fixLuciadCPillar
LCP-255
Bug fixLuciadCPillar
LCP-251
Upgrade considerationLuciadCPillar
WmtsModelDecoder::decodeWmtsModelDecoder::decodeWmtsModelDecoder::decode method now uses a pointer of the WmtsDataSourceWmtsDataSourceWmtsDataSource.
The GeoPackageModelDecoder::decodeGeoPackageModelDecoder::decodeGeoPackageModelDecoder::decode method now uses a pointer of a new class, GeoPackageDataSourceGeoPackageDataSourceGeoPackageDataSource as input.
Upgrade considerationLuciadCPillar
WmtsModelDecoderWmtsModelDecoderWmtsModelDecoder now returns the more specific IRasterModelIRasterModelIRasterModel
instead of the more generic ModelModelModel.
Upgrade considerationLuciadCPillar
LCP-273
MilitarySymbolStyleMilitarySymbolStyleMilitarySymbolStyle have now been aggregated in
a TextStyleTextStyleTextStyle.
The text rendering style can be configured by invoking MilitarySymbolStyle::Builder::textStyleMilitarySymbolStyle::Builder::textStyleMilitarySymbolStyle::Builder::textStyle.
Upgrade considerationLuciadCPillar
LCP-102
Upgrade considerationLuciadCPillar
harfbuzz to support rendering fonts using non-latin alphabets.
Upgrade considerationLuciadCPillar
to_string methods for SortProperty, SortOperator
and SortOrder types in the FeatureQueryFeatureQueryFeatureQuery class were removed.
Upgrade considerationLuciadCPillar
FeatureQueryConfigurationFeatureQueryConfigurationFeatureQueryConfiguration class now returns the scale level count and
an indexed accessor instead of returning the whole vector of conditions.
The FeatureQueryConfiguration::getConditionFeatureQueryConfiguration::getConditionFeatureQueryConfiguration::getCondition method can return an optional when
all features must be considered for a query.
Upgrade considerationLuciadCPillar
GeometryFactory::createArcBandGeometryFactory::createArcBandGeometryFactory::createArcBand now takes the center
of the arc band as 2nd parameter. This aligns the signature with other geometry creation methods.
Upgrade considerationLuciadCPillar
Upgrade considerationLuciadCPillar
LCP-179
Map::ViewMapTransformation::viewToMapMap::ViewMapTransformation::viewToMapMap::ViewMapTransformation::viewToMap is now a synchronous call, and doesn't require the use of a callback anymore.
Due to this change, the IPointCallback class is not needed anymore in the API, so it was removed.
An additional change is that Map::getViewMapTransformationMap::getViewMapTransformationMap::getViewMapTransformation is now a const method, and that it now returns a const ref as a result.
Upgrade considerationLuciadCPillar
LCP-170
Map::queryFeaturesMap::queryFeaturesMap::queryFeatures: It is now possible that the same feature appears multiple times in the result list.
A new overlay flag has been added to MapQueryFeaturesResultMapQueryFeaturesResultMapQueryFeaturesResult for features that have been hit by their
overlay component drawn in view space. MapQueryFeaturesResult::mapTouchPointMapQueryFeaturesResult::mapTouchPointMapQueryFeaturesResult::mapTouchPoint is now optional and does
not have a value for overlay items.
Upgrade considerationLuciadCPillar
FeatureCanvas::TextDrawCommandFeatureCanvas::TextDrawCommandFeatureCanvas::TextDrawCommand now accepts TextStyleTextStyleTextStyle instead
of separate text styling properties.
2020.1
2020.1
New featureLuciadCPillar
New featureLuciadCPillar
New featureLuciadCPillar
LCP-71
Map::queryFeaturesMap::queryFeaturesMap::queryFeatures.
See FeatureCanvas::GeometryDrawCommand::queryableFeatureCanvas::GeometryDrawCommand::queryableFeatureCanvas::GeometryDrawCommand::queryable, FeatureCanvas::IconDrawCommand::queryableFeatureCanvas::IconDrawCommand::queryableFeatureCanvas::IconDrawCommand::queryable,
FeatureCanvas::TextDrawCommand::queryableFeatureCanvas::TextDrawCommand::queryableFeatureCanvas::TextDrawCommand::queryable for more details.
New featureLuciadCPillar
IControllerIControllerIController class documentation for more information.
A user can now create its own implementation of a controller and can interact with the map in a UI toolkit-independent way.
These interactions are for example:
- Map navigation
- Selection
New featureLuciadCPillar
GdalModelDecoderGdalModelDecoderGdalModelDecoder
which uses the GDAL library.
New featureLuciadCPillar
GeoPackageModelDecoderGeoPackageModelDecoderGeoPackageModelDecoder now supports the GeoPackage 1.0.1, 1.1.0, 1.2.1, and the 1.3.0 specifications.
New featureLuciadCPillar
New featureLuciadCPillar
ImprovementLuciadCPillar
ImprovementLuciadCPillar
Feature::asBuilderFeature::asBuilderFeature::asBuilder method was added. This method allows to copy and modify an
existing FeatureFeatureFeature.
ImprovementLuciadCPillar
LCD-11339
CoordinateReferenceProviderCoordinateReferenceProviderCoordinateReferenceProvider now also has support for
http://www.opengis.net/def/crs/OGC/1.3/CRS84 and
http://www.opengis.net/def/crs/OGC/0/CRS84h.
ImprovementLuciadCPillar
ImprovementLuciadCPillar
ImprovementLuciadCPillar
GeometryFactory::createArcBandGeometryFactory::createArcBandGeometryFactory::createArcBand now optionally takes the direction of the arc band.
ImprovementLuciadCPillar
LCP-109
FeatureLayerFeatureLayerFeatureLayer has been improved in the case of
many small features, like roads.
ImprovementLuciadCPillar
LCP-127
luciad::Exception::getStackTraceluciad::Exception::getStackTraceluciad::Exception::getStackTrace was very slow on Windows. Generating a single
stack trace could take more than 30 seconds. This is now reduced to less than a second.
ImprovementLuciadCPillar
LCP-69
Debug library version.
ImprovementLuciadCPillar
LCP-126
ImprovementLuciadCPillar
LCP-122
ImprovementLuciadCPillar
ImprovementLuciadCPillar
LCP-95
ImprovementLuciadCPillar
ImprovementLuciadCPillar
LCP-4
Bug fixLuciadCPillar
Bug fixLuciadCPillar
LCP-46
Bug fixLuciadCPillar
LCP-45
Bug fixLuciadCPillar
LCP-154
IFeatureModelIFeatureModelIFeatureModel, and then removing
its layer from the map.
Bug fixLuciadCPillar
LCP-108
Bug fixLuciadCPillar
LCP-138
CoordinateReferenceProviderCoordinateReferenceProviderCoordinateReferenceProvider when trying to parse a WKT string containing an EPSG authority code.
Bug fixLuciadCPillar
LCP-137
CoordinateReferenceProviderCoordinateReferenceProviderCoordinateReferenceProvider didn't correctly parse Web Mercator (EPSG:3857) WKT strings
from gdal. The geodetic datum was spherical instead of flattened.
Bug fixLuciadCPillar
LCP-133
| Set Code | Symbol Code | Name |
|---|---|---|
| 10 | 111001 | LAND UNIT - Command and Control - Signal – Radio |
| 10 | 111002 | LAND UNIT - Command and Control - Signal - Radio Relay |
| 10 | 111003 | LAND UNIT - Command and Control - Signal – Teletype |
| 10 | 111004 | LAND UNIT - Command and Control - Signal - Tactical Satellite |
| 10 | 111005 | LAND UNIT - Command and Control - Signal - Video Imagery (Combat Camera) |
Bug fixLuciadCPillar
LCP-1
Bug fixLuciadCPillar
LCP-6
Bug fixLuciadCPillar
LCP-2
IIconIIconIIcon instance
in an IFeaturePainterIFeaturePainterIFeaturePainter implementation. Same IIconIIconIIcon instances are now
internally re-used, which leads to less memory usage and a higher painting performance.
Upgrade considerationLuciadCPillar
VerticalAlignment::Above and VerticalAlignment::Below have been renamed
to VerticalAlignment::TopVerticalAlignment::TopVerticalAlignment::Top and VerticalAlignment::BottomVerticalAlignment::BottomVerticalAlignment::Bottom respectively.
Upgrade considerationLuciadCPillar
Upgrade considerationLuciadCPillar
ExpressionValueExpressionValueExpressionValue methods boolValue, doubleValue,
... have been renamed to getBoolValue, getDoubleValue, etc.
Upgrade considerationLuciadCPillar
Upgrade considerationLuciadCPillar
LCP-156
LayerFeatureIdLayerFeatureIdLayerFeatureId has been changed.
It is now consistent with the type name.
Upgrade considerationLuciadCPillar
Upgrade considerationLuciadCPillar
MilitarySymbol::copyToFeatureMilitarySymbol::copyToFeatureMilitarySymbol::copyToFeature now takes a FeatureFeatureFeature instead of a FeatureIdFeatureIdFeatureId.
If you used to call this method, simply replace the FeatureIdFeatureIdFeatureId argument with
Feature::newBuilder().id(id).dataType(MilitaryDataModel::getSymbolType()).build()Upgrade considerationLuciadCPillar
create methods which returned std::unique_ptr<> now return
std::shared_ptr<>.
The affected methods are:
FeatureStateManager::Change::createFeatureStateManager::Change::createFeatureStateManager::Change::createIFeatureModelObserver::createIFeatureModelObserver::createIFeatureModelObserver::createIFeatureQueryCallback::createIFeatureQueryCallback::createIFeatureQueryCallback::createIInvalidationCallback::createIInvalidationCallback::createIInvalidationCallback::createILayerObserver::createILayerObserver::createILayerObserver::createIMapQueryFeaturesCallback::createIMapQueryFeaturesCallback::createIMapQueryFeaturesCallback::createIPointCallback::create
Upgrade considerationLuciadCPillar
std::optional<std::shared_ptr<>> now return std::shared_ptr<>.
In your implementation you should now return nullptr iso std::nullopt.
Upgrade considerationLuciadCPillar
luciad::GeometryFactory::createArcBandluciad::GeometryFactory::createArcBandluciad::GeometryFactory::createArcBand had default parameter values
which would lead to a degenerate case. The default values have been made mandatory.
Upgrade considerationLuciadCPillar
IMapInvalidationCallback was renamed to IInvalidationCallbackIInvalidationCallbackIInvalidationCallback.
Upgrade considerationLuciadCPillar
Map::queryFeaturesMap::queryFeaturesMap::queryFeatures now uses a Map::FeatureQueryMap::FeatureQueryMap::FeatureQuery to select the features.
This query object now also provides additional filtering options, among others the ability to filter on specific
features.
The resulting features are sorted using the following criteria:
3D:
- Top Most feature (unless draped)
- Layer order
- Feature Z order
- Unspecified Order
- Layer order
- Feature Z order
- Unspecified Order
The callback used in the
Map::queryFeaturesMap::queryFeaturesMap::queryFeatures is renamed to IMapQueryFeaturesCallbackIMapQueryFeaturesCallbackIMapQueryFeaturesCallback
and it now returns a list of MapQueryFeaturesResultMapQueryFeaturesResultMapQueryFeaturesResult instances.
Upgrade considerationLuciadCPillar
FeatureState::getValuesFeatureState::getValuesFeatureState::getValues now returns a vector of value objects instead of a vector of
pointers.
Upgrade considerationLuciadCPillar
eigen to support the GeoTIFF format.
Upgrade considerationLuciadCPillar
IFeatureModelIFeatureModelIFeatureModel now has API that allows to change the model using the getUpdater
method. See IFeatureModelUpdaterIFeatureModelUpdaterIFeatureModelUpdater. This change will break existing IFeatureModelIFeatureModelIFeatureModel
implementations. These can be fixed by implementing the new method, and returning std::nullopt.
Upgrade considerationLuciadCPillar
GeoPackageTableMetadataGeoPackageTableMetadataGeoPackageTableMetadatatype field has become a string
and the enumeration GeoPackageTableMetadata::TableType has been removed.
The method GeoPackageModelDecoder::discoverTablesGeoPackageModelDecoder::discoverTablesGeoPackageModelDecoder::discoverTables has an additional parameter which allows
to filter on supported table data types only or to return all tables available within the GeoPackage file.
Use the value false to get the filtering behavior as before.
These changes allow to discover all content provided by a GeoPackage file, even when not all of it is supported.
Upgrade considerationLuciadCPillar
GDAL and proj
to support the GeoTIFF format.
Upgrade considerationLuciadCPillar
SQLite library has been updated to version 3.31.1.
Upgrade considerationLuciadCPillar
libgpkg has been updated to version 1.0.1 to support newer versions of the GeoPackage specification.