This page provides details about enhancements in the 300.1 release of ArcGIS Maps SDK for Qt. It also lists this release’s deprecations, resolved issues, known issues, and more.

Enhancements

Scenes (3D)

Places and Labels layer in local scenes

The Open 3D Labels layer, a global layer of places and labels available in light and dark variants, now displays labels in LocalSceneView. As a result, 3D basemaps that include the Places and Labels layer now render labels in LocalSceneView as well. This complements existing support for the global Buildings and Trees layers and allows the full contents of Esri 3D basemaps to be rendered.

The LocalSceneView now supports rendering of Raster Tile Layers that have been authored with BlendModes in a WebScene. Blend modes are used to blend layers together to create creative and compelling scenes or to highlight specific patterns in data. There is currently no API to control or change blending type, and GroupLayers are ignored when determining how layers are blended.

3D Tiles in local scenes

3D Tiles layers are now supported in the LocalSceneView, extending 3D Tiles visualization from global scenes to local scenes, which provide support for visualizing data in a wide variety of projected coordinate systems. The addition of 3D Tiles enables integration of additional sources of 3D textured mesh data, such as Google Photorealistic 3D Tiles. Additionally, 3D Tiles layers now include dynamic attribution which is determined for the current viewpoint and aggregated into a single string and accessed via the GeoView‘s attributionText() property. The dynamic attribution is visible by default within the built-in attribution bar in the SceneView and LocalSceneView UI controls. If using Google Photorealistic 3D Tiles, follow Google’s requirements for applications developed with Google’s Map Tiles API.

Local scene view with OGC 3D Tiles

Gaussian splat layer

Use the new GaussianSplatLayer to visualize highly realistic built and natural environments in a LocalSceneView. Gaussian splats render high-fidelity detail for thin and intricate structures such as power lines, guardrails, and antennas, making them well suited to infrastructure workflows.

Gaussian splat layers can be displayed only in a LocalSceneView, and, in the current release, only on Linux, macOS, and Windows.

Gaussian splat layer visualization in a local scene view

Accessibility-aware label text scaling enabled by default

Label text generated from LabelDefinition classes on layers in the operational layers collection now scales with the device’s accessibility text-size settings by default. This capability can display larger labels than in previous releases, improve label legibility for users who increase system text size, and keep labels more consistent with the rest of the application’s user interface. To preserve the previous behavior and keep label text at a fixed size regardless of accessibility settings, set isUseSystemTextScale() to false on SceneView or LocalSceneView.

Analysis API

Analysis API enhancements

This release builds on the high-performance analysis APIs released in 300.0 with the following capabilities:

  • Additional map algebra functions to expand mathematical operations in analysis workflows, including trigonometric and exponential functions, as well as functions such as clamp and remainder. See the Map algebra topic for more information.
  • Slope and aspect functions to calculate terrain steepness and slope direction.

Animated scene showing slope and aspect analysis results

  • Analysis APIs now support processing datasets larger than 2 GB by breaking processing into smaller GPU-queued areas before reassembling them into a single result file.

Symbology

New DictionarySymbolStyle property

DictionarySymbolStyle now exposes a new property uiSchemaJson(). This UI Schema JSON, if present in the Esri published dictionaries or webstyles, provides a set of rules and domains that could be used to build a user experience for browsing and building symbols from the dictionary style.

Military symbology updates

Some control measure line symbols include elements whose appearance is determined by a measurement attribute as specified by the standard. With this release, these symbols can now be rendered dynamically, reflecting the values from their associated measurement attributes. For example, air corridor symbols will use the attribute mapped to the new width symbol property to determine the real-world distance between the parallel corridor lines. The model configuration property must be set to ordered anchor points. This feature is only supported in static rendering mode when working in 3D. For more information on the latest updates to the Military Symbology Dictionary Styles, see the Military symbology styles change log.

Utility Network

Enhanced shared template workflows

Shared templates now provide a more consistent editing experience across connected and disconnected workflows, with improvements for offline support, geometry builders, transactions, and performance.

Shared templates can now be included when generating a sync-enabled mobile geodatabase. SyncCapabilities:isSupportsSharedTemplates() indicates whether a feature service supports shared template download. If it does, createDefaultGenerateGeodatabaseParametersAsync() automatically enables GenerateGeodatabaseParameters::setSyncSharedTemplates(), allowing field applications to provide the same guided feature creation experience online and offline.

Template-driven feature creation has been expanded. SharedTemplateSource::createFeaturesAsync() now supports GeometryBuilderToolType::RadialLines, allowing one template to generate multiple connected features from a common origin. This is useful for utility network workflows, such as creating multiple service connections from a transformer or distribution junction.

Geometry builder tools also preserve true-curve geometries when creating offsets, buffers, and intervals. This ensures that assets generated along curved roads, pipelines, water mains, and other infrastructure retain their intended shape.

FeatureTemplateRelationship::numberOfRelatedFeatures() indicates how many related records a template can create. Applications can use this value to more accurately communicate editing results when a single operation creates a feature and additional inspection, maintenance, or asset records.

Shared template performance has been improved through optimized caching of template definitions. This reduces service queries and processing overhead for complex group and preset templates, resulting in faster template loading and a more responsive editing experience.

Named utility trace functions

Named utility network trace functions authored in ArcGIS Pro 3.7 and ArcGIS Enterprise 12.1 or later are supported through new UtilityTraceFunction constructors and the UtilityTraceFunction::functionName() property.

Named trace functions help applications distinguish outputs when multiple calculations use the same network attribute and operation with different criteria. For example, a trace can calculate separate load totals for residential and commercial customers using conditional aggregations on the same attribute. By exposing the author-defined function name, applications can identify, label, organize, and display trace results without extra inference logic.

Utility Network schema version 8

Utility Network schema version 8 is now supported for non-telecom networks authored in ArcGIS Pro 3.7 and ArcGIS Enterprise 12.1 or later.

You can continue to work with schema version 8 datasets for tracing, rule-based editing, association management, topology validation, and offline workflows, including generating and synchronizing mobile geodatabases. This provides compatibility with utility networks created using the latest ArcGIS Utility Network releases. Applications for electric, gas, water, and sewer workflows can keep using current APIs and workflows without modification. Telecom utility network datasets are not supported in this release.

Multi-user branch version workflows with ServiceGeodatabase

ArcGIS Maps SDKs for Native Apps introduce ServiceGeodatabase::refreshAsync() for applications that work with named branch versions in ArcGIS Enterprise 12.0 and later.

This API supports long-lived workflows that use a ServiceGeodatabase configured with FeatureServiceSessionType::Persistent. The SDK manages version sessions and moments while supporting ArcGIS Enterprise’s multiple-reader, single-writer branch-version concurrency model. For background, see Version locking models. For example, applications can keep a map open on a shared named version while other users review, edit, reconcile, and post changes. The SDK maintains a consistent moment for queries and analysis so feature queries, utility network traces, and association queries run against a consistent state of the version.

The SDK automatically advances the client moment to the latest edit moment after local add, update, and delete operations, ServiceGeodatabase::applyEditsAsync(), or utility network operations such as UtilityNetwork::validateNetworkTopology().

When applications are ready to incorporate edits committed by other users, they can call ServiceGeodatabase::refreshAsync(). This advances the client moment to the latest server edit moment, refreshes affected layers, and redraws displayed features without recreating the ServiceGeodatabase or manually managing version moments.

Geodatabase

Sync attachment keywords

When working with a feature service through the Native Maps SDKs, SyncCapabilities::isSupportsAttachmentKeywords() reports whether the service supports syncing attachment keywords. If supported by the service, GenerateGeodatabaseParameters::setSyncAttachmentKeywords() defaults to true when you manually take feature data or a map offline, so attachment keywords are included. When taking a web map offline with offline settings customized in Portal, the value configured in the portal is used.

Map view

Changing view insets

Normally, changing MapView::viewInsets() does not change the rendered map area, since the map is not locked to a specific Viewpoint. To keep the current viewpoint when insets change due to the resizing of UI elements, set the new MapView::insetsViewpointAdjustment() property to InsetsViewpointAdjustmentType::PreserveCenter. This property has no effect when LocationDisplay is active and LocationDisplayAutoPanMode is set to anything other than Off.

Accessibility-aware label text scaling enabled by default

Label text generated from LabelDefinition classes on layers in the operational layers collection now scales with the device’s accessibility text-size settings by default. This capability can display larger labels than in previous releases, improve label legibility for users who increase system text size, and keep labels more consistent with the rest of the application’s user interface. To preserve the previous behavior and keep label text at a fixed size regardless of accessibility settings, set isUseSystemTextScale() to false on MapView.

Feature form

Attachments form element enhancements

AttachmentsFormElement was introduced in 200.5 with basic attachment editing support via a FeatureForm. In 300.1, it brings additional capabilities from web maps into the feature form experience. New overloads of AttachmentsFormElement::addAttachment() allow attachment filenames to be calculated from an Arcade expression. New Attachment objects are also automatically assigned the element’s keyword. Form designers can define criteria enforced by AttachmentsFormElement, including allowed attachment types, maximum file size or video/audio duration, and minimum or maximum number of attachments.

Layer

Enhanced VectorTiledLayer

Several ArcGISVectorTiledLayer enhancements have been added including:

  • Improved ArcGISVectorTiledLayer for better rendering performance, with layer load times reduced by up to 25% and memory usage reduced by up to 20%.

  • MapView now supports identify on vector tiled layers that include feature IDs. Identify operations return an IdentifyLayerResult for each matching vector tiled layer, with VectorTileFeature results that include attributes and the associated VectorTileStyleLayerType. Geometry is returned only for point-based features, such as circle and symbol styles.

  • You can author vector tiled layers to have feature IDs by retaining relevant attributes when publishing from ArcGIS Pro. While authoring ArcGISVectorTiledLayer content with feature IDs, include only required attributes. Including too many attributes can increase tile size and negatively affect rendering performance and memory usage.

Vector Tiled Layer Identify

Raster

Build and manage raster pyramids

You can now inspect, build, and delete pyramid overviews for file-based Rasters using the RasterPyramids class. Pyramid overviews are typically created to improve performance for rasters that can take longer to display due to being large in size or highly compressed. Use the pyramidInfo() property to access relevant information that can be determined about existing pyramids on the Raster, such as the number of pyramid levels, compression method, resampling method, and the file path to an external pyramid file. The deletePyramids() method will delete pyramid overviews stored in an external .ovr file; it will not delete pyramids embedded in the source raster file. The buildPyramids() method will start an operation that builds pyramid overviews in an external .ovr file, which can be monitored for progress or cancelled. Parameters can optionally be set to define the number of levels, the resampling method, and the compression method used.

New close method to release native resources

The close() method has been added to Raster to provide deterministic release of native resources, such as file handles, associated with file-based rasters. This is especially important in garbage-collected environments, which do not provide deterministic destructors and cannot guarantee timely resource cleanup. Call close() on a Raster when it is no longer in use.

Offline maps

Geospatial PDFs and raster files

In addition to tile packages and vector tile packages, you can now specify a georeferenced PDF or any supported raster file when using a locally referenced basemap in an offline map. The referenceBasemapFilename() const can be set in the OfflineSettings of a web map or when configuring offline map parameters in an OfflineMapTask.

Editing

Track previewed geometry changes during edit interactions

You can now subscribe to the new interactionPreviewChanged() event on the GeometryEditor receive’s updates about the state of the geometry during an ongoing edit interaction, for example during a vertex creation or move, or when moving, scaling, or rotating a geometry or part.

The GeometryEditorInteractionPreview event parameter provides access to the preview geometry, which represents the geometry that would be created if the ongoing interaction were completed. It also includes the interaction element, which identifies the element being edited, and the interaction type, which indicates the type of interaction.

This event allows you to provide real-time feedback as users edit geometries. For example, you can show alerts or update symbology when the preview geometry meets criteria such as exceeding a maximum area or length. Alternatively, if using the ProgrammaticReticleTool, you can use the information provided by this event to enable and disable controls for vertex placement depending on whether or not the previewed geometry intersects the geometry of an existing feature.

interactionPreviewChanged-geometryeditor-relnotes300-1

Popups

Alternative text for popup media

You can now access the alternative text for popup media with the new PopupMedia::alternativeText() property.

Arcade

Support for new Arcade version

The Qt Maps SDK now offers partial support for Arcade 1.36 and Arcade 1.37.

Updated functions

GetKeys, GetValues, Count now accept Pixel and Voxel types.

The zero-argument Portal overload is not supported and returns null.

GetEnvironment updates are not supported:

  • activePortal is set to null
  • availablePortals is set to an empty Array

New constants

Support for NaN has been added.

New profile

Support for the Form Attachment Filename Calculation has been added.

Indoor positioning

Enhanced geometry-aided indoor positioning

Improved reliability during initial positioning, a refined step detection algorithm, and reduced positioning lag for a more responsive experience.

Android only: Robust beacon scanning

Bluetooth beacon signal scanning now automatically restarts every 5 minutes to mitigate OS-level restrictions on long-running radio scan sessions.

Point cloud layer

Customizations

Point cloud layers are now supported in LocalSceneView, extending point cloud visualization from global scenes to local scenes.

You can now customize how a PointCloudLayer is displayed using renderers and filters. Use a PointCloudClassBreaksRenderer, PointCloudRgbRenderer, PointCloudStretchRenderer, or PointCloudUniqueValueRenderer to symbolize points using point cloud layer attributes. You can also control point size and modulate point colors to emphasize patterns in the data.

Use a PointCloudValueFilter, PointCloudReturnFilter, or PointCloudBitfieldFilter to show points that match attribute values, LiDAR return types, or bit flags. Combining renderers and filters helps you distinguish and focus on features such as buildings, vegetation, and ground surfaces in a point cloud.

PointCloudLayer renderers and filters are only supported in LocalSceneView.

Point cloud visualization changing as renderers and filters are applied

Projection engine

GDAL support

There are no updates to the coordinate systems and transformations tables, or to the grid transformation files in the Projection Engine Data download in this release. However, the Projection Engine Data download has been updated with the latest GDAL support files. If your app works with raster data, including for display or analysis, you should download and reference the GDAL support files from the latest Projection Engine Data download. You must reference GDAL support files from the download that matches your version of ArcGIS Maps SDK for Qt. For details, see GDAL support files in the Spatial references topic.

SDK enhancements

Linux ARM64 support

Added Linux ARM64 (aarch64) support for systems with full OpenGL-capable graphics hardware, expanding platform coverage beyond x86_64 Linux environments.

NGA GEOAxIS support

Added support for NGA GEOAxIS authentication.

Local Server

No updates

There are no Local Server updates with this release.

Breaking API changes

There are no breaking changes for this release.

Behavior changes

  • When loaded, an ArcGISSceneLayer that contains labels now has ArcGISSceneLayer::isLabelsEnabled() set to true by default.
  • UtilityNetwork::canAddAssociationAsync() now restricts point features to a single containment association, consistent with ArcGIS Pro.
  • ServiceGeodatabase::applyEditsAsync() and ServiceFeatureTable::applyEditsAsync() now omit unchanged null attribute values and unchanged geometry from calls to FeatureTable::updateFeatureAsync(). This helps prevent unintended data loss in collaborative editing workflows and reduces update payload sizes.
  • Editing a sync-enabled mobile geodatabase that contains utility network source tables now requires the Advanced Editing user type extension, even when editing related or stand-alone non-utility network tables. Developers should ensure appropriate licensing for offline editing workflows that include utility network source data.
  • SharedTemplateSource::addFeaturesAsync() now applies shared template edits as a single transaction. If the operation fails, all changes are rolled back.
  • SharedTemplate can now be loaded and used without obtaining references to all tables referenced by the template, simplifying initialization and reducing setup complexity.
  • The Projection Engine Data download contains updated GDAL support files. You must reference GDAL support files from the download that matches your version of ArcGIS Maps SDK for Qt. See the Projection engine section and see GDAL support files in the Spatial references topic for more details.
  • Starting with this release, SurfacePlacement set to Relative uses the elevation from integrated mesh content. This applies when a Scene contains an IntegratedMeshLayer or an Ogc3dTilesLayer configured as an integrated mesh.
  • Geometry Z values are treated as offsets from the mesh elevation. A Z value of 0 places the geometry directly on the mesh surface. Positive Z values position the geometry above the mesh, while negative Z values position it below the mesh by the corresponding offset.
  • The Qt6Multimedia.dll is no longer delay-loaded on Windows and is now a direct dependency of the Qt Maps SDK, as noted in the install and setup guide; the Qt Multimedia module no longer has a direct dependency on mf.dll, which was not available on all Windows systems. This behavior was previously tracked as a bug in Qt and is now resolved in all supported versions of Qt.

Deprecations

API deprecations

There are no API deprecations.

OS and framework deprecations

  • Error::extendedError and the associated ExtendedErrorType enum are deprecated. There is no replacement as it was obsolete.
  • Support for Android 9 (API 28) is deprecated. 300.1 is the last release that supports Android 9. Android 10 (API 29) will be the minimum supported version in the next release.

Issues resolved

  • Under certain circumstances, FeatureForm::finishEditingAsync() persists attribute edits even when the attempt to save attachment or utility association edits fails (and throws an error). With this fix, the entire edit operation is performed within a transaction: either all changes are saved or none are saved.
  • True curves are not supported in scene view using dynamic rendering mode.
  • Labels for features removed by a display filter are not correctly removed from the map.
  • BUG-000178816, BUG-000182448, BUG-000184569, BUG-000185067, BUG-000185126, BUG-000185503 - ArcGISFeatureTable fails to load with an "Arcade expression requires a later version of Runtime" error.
  • BUG-000183130 - SubtypeFeatureLayer does not honor FeatureLayer::isScaleSymbols() when enabled by Map::referenceScale().
  • BUG-000184045 - SubtypeFeatureLayer does not evaluate the FeatureSetByID() Arcade function.
  • The maximum size of raster data used to populate a ContinuousField, DiscreteField, or BooleanField is 2 GB, which is equivalent to 23170 x 23170 pixels.
  • BUG-000185647 - Version 300.x crashes when adding certain feature layers with dynamic rendering mode

Known issues

  • The slope and aspect functions require input data in a shape-preserving (conformal) projected coordinate system, and the data’s vertical (elevation) units must match the horizontal units of that coordinate system.
  • ViewshedFunction is supported only with ContinuousField in a projected coordinate system. Geographic coordinate systems such as WGS84 are not supported in this release.
  • A FieldAnalysis can be displayed in MapView or SceneView only when the result spatial reference matches the view.
  • Raster data with 64-bit float or integer-based pixels is not supported.
  • Raster data with u32 integer-based pixels is supported only when values are within an i32 range. u32 values outside an i32 range are not supported.
  • The maximum size of a ContinuousField, DiscreteField, or BooleanField used in a FieldAnalysis is 1 GB, which is equivalent to 16384 x 16384 pixels.
  • Gaussian splat layers do not support modifying opacity.
  • (Windows only) Evaluating a chain of multiple spatial analysis API functions at once can cause slow evaluation times. You can improve performance by breaking down your analysis into smaller steps. Do this by evaluating a single FieldFunction then creating a new FieldFunction with the resulting Field. Build your analysis by evaluating each step, one at a time, using the resulting Field from the previous step.

Sample updates

Enhancements to samples

  • Added support for the Android back button in the Sample Viewer.

New samples

Toolkit updates

  • Added CMake support for the UI example project.
  • Added CMake support for the Calcite example project.