This page provides details about enhancements in the 200.8 release of ArcGIS Maps SDK for Qt. It also lists deprecations, resolved issues, known issues, and more.
Enhancements
Geometry editing
Customizable geometry editing workflows using the programmatic reticle tool
You can now configure your GeometryEditor
to use the new ProgrammaticReticleTool
to facilitate customized geometry editing workflows such as those using buttons rather than tap interactions. Unlike our existing tools the ProgrammaticReticleTool
has no built in touch interaction. Instead, it is driven by programmatic operations allowing you to configure your own behavior and interaction using buttons or other triggers of your choosing.
Use ProgrammaticReticleTool::selectElementAtReticle()
and ProgrammaticReticleTool::pickUpSelectedElement()
to select and pick up the GeometryEditorVertex
or GeometryEditorMidVertex
at the reticle position. Then, drop a picked-up vertex or insert a new vertex using ProgrammaticReticleTool::placeElementAtReticle()
.
The ProgrammaticReticleTool::vertexCreationPreviewEnabled()
property can be used to enable or disable the appearance of vertex feedback and feedback lines that are drawn underneath the reticle. It can also be used to enable or disable both visual and haptic snap feedback. This is useful when implementing workflows that do not allow for vertex creation.
Hovered and picked up element changed events
The GeometryEditor::hoveredElementChanged()
and GeometryEditor::pickedUpElementChanged()
events can be used in your app to react to state changes in the GeometryEditor
, and are especially useful when working with the new ProgrammaticReticleTool
.
For example, when GeometryEditor::hoveredElementChanged()
occurs, based on the GeometryEditor::hoveredElement()
, your app UI can display a button that selects and picks up the element currently underneath the reticle, as shown below. Similarly, when GeometryEditor::pickedUpElementChanged()
occurs, your app UI can display a button that drops the GeometryEditor::pickedUpElement()
or places a new vertex, using ProgrammaticReticleTool::placeElementAtReticle()
. You can check the GeometryEditor::pickedUpElement()
to indicate to the user whether or not they will be inserting a new vertex or dropping a currently picked up element.

Disable grow effect when hovering over geometry editor elements
Use the new GeometryEditorStyle::growEffect()
to enable and disable the visual effect of vertices and mid-vertices growing when hovered.
Vertices and mid-vertices can be separately configured using GeometryEditorGrowEffect::applyToVertices()
and GeometryEditorEffect::applyToMidVertices()
.
Identify geometry editor elements
Use the MapView::identifyGeometryEditor()
method to identify elements at a given position when using the GeometryEditor
. This allows you to implement workflows such as selecting geometry editor elements or updating the viewpoint to be centered at that element on a long press.

Customizable precision with tolerance and resolution
Use the new SpatialReferenceBuilder
to create new SpatialReference
objects with custom tolerance and resolution values for high accuracy workflows and GeometryEngine
.
The SpatialReference
class exposes new read-only properties for SpatialReference::tolerance()
, SpatialReference::verticalTolerance()
, SpatialReference::resolution()
, and SpatialReference::verticalResolution()
.
This resolves the following enhancement request: EN
.
Utility network
Utility Network creation and access
The UtilityNetwork
object can now be created with a ServiceGeodatabase
object. When these objects are created from the same feature service source, they share the same instances of FeatureTable
. This new constructor emphasizes the explicit relationship between them. Similarly, when a Map
object is created from a web map containing utility network data, the layers, tables, and utility networks all use the same underlying ServiceGeodatabase
object. Instead of creating a standalone UtilityNetwork
, consider accessing the Utility
using the Map::utilityNetworks()
property. All public samples containing utility network data have been updated to align with this change. For more detailed information, refer to the API deprecations section.
Add title property to utility association result
This release adds a title
property to UtilityAssociationResult
. It provides a user-friendly name for UtilityAssociation
s shown in a FeatureForm
or Popup
. The title is derived from the title
of the FeatureFormDefinition
or PopupDefinition
of the associated feature's layer or table, with a suitable fallback if no Feature
or Popup
has been created.
Indoor positioning in offline apps
Support for on-demand and pre-planned offline map area workflows
It is now possible to create offline applications using an IPS-aware web map and implement the on-demand and pre-planned workflows. Indoor positioning data will be taken offline using ArcGIS Maps SDKs' offline jobs and the offline application will display a blue dot in the respective offline map area indoors.
Query and identify optimizations
ArcGISFeature access optimization
Accessing ArcGISFeature
s by performing query operations on a ServiceFeatureTable
or UtilityNetwork
, as well as through the identify methods with FeatureLayer
s, has seen a significant boost in performance. This improvement is particularly evident when working with a map or scene that contains a large feature dataset, as these asynchronous operations now return results more efficiently, even while all features are still being rendered.
Layers
Improved performance and user experience of KML layers in a scene
In this release, performance and user experience for KML layers in 3D have been improved. The changes focus on line and polygon geometries. You'll notice the biggest improvements when a layer contains a large volume of data. Interaction with KML layers is now smoother, providing a much better user experience.
PDF Support
PDF files are now a supported raster file format, including GeoPDF(R) and geospatial PDFs using the ISO encoding. They can now be directly added to maps or scenes as raster layers or basemaps without the need to first convert them to another format. The first page of a PDF will be read and georeferenced according to optional embedded spatial reference information, and at a default DPI of 300.
Symbology
Support for fetching Model Symbols from a mobile Style file
This release adds support to fetch a Model Symbol from a mobile Style file. You can search for a model symbol in the mobile style or fetch a symbol by providing list of keys. The type of symbol returned is a MultilayerPointSymbol
and model symbol layer object is returned as a generic SymbolLayer
type object. This workflow is already supported for WebStyles.
Attribute editing with feature forms
Add JSONSerializable interface to feature form definition
This release adds JSONSerializable
interface to FeatureFormDefinition
to allow advanced clients to get access to the full JSON data.
Arcade
Support for new Arcade version
The SDK now supports Arcade 1.33
- Geotrigger notification profile now supports
$
.Fence Layer Translate
function is not yet supported and will be supported in a future release.Text
Projection Engine
Geographic (datum) transformations
- Added geographic (datum) transformation method Molodensky-Badekas (Position Vector). The existing Molodensky-Badekas method uses the Coordinate Frame version of the rotation matrix.
- Added geographic (datum) transformation method NTv2_Velocity. Although the method is designed to support datum anchor epochs and data epochs, only frame epochs of the geographic coordinate systems are currently supported for interframe conversions such as between NAD83(CSRS)v2 and NAD83(CSRS)v8.
SDK enhancements
Revamped Authentication API
ArcGIS Maps SDK 200.8 for Qt introduces a brand-new way to authenticate with ArcGIS. This new pattern utilizes the same underlying logic and design patterns used by the Swift, Kotlin, and Flutter Maps SDKs, which brings about a number of benefits. Some of the primary benefits include a shared codebase and shared design, which means a richer feature set with improved stability and quality. This initial release contains feature parity with the legacy authentication system, but future versions of the SDK will expand capabilities to reach equivalency with the other Native SDKs. To migrate to the new system, opt out of the old system with the following line of code at the beginning of your main.cpp:
ArcGISRuntimeEnvironment::setUseLegacyAuthentication(false);
From there, the simplest way to migrate is to use the new Authenticator toolkit component. To use this, simply declare it in your qml file:
Authenticator {
anchors.centerIn: parent
}
For further details on the background motivation, benefits, migration, and roadmap, please see the recent blog.
Authenticator toolkit component
The new Authenticator
toolkit component handles authentication challenges and automatically launches the appropriate UI for each type of authentication. Authenticator replaces AuthenticationView, as it works with both the legacy and new authentication systems. We recommend migrating apps to use Authenticator as soon as possible, even if you're not yet ready to move to the new authentication system. Doing so will streamline future migration efforts, while continuing to have the same functionality and user experience.
External out-of-process browser support for OAuth logins on iOS and Android
The "external out-of-process browser workflow" refers to a login experience where once an authentication challenge is issued, the system's default browser will open up an OAuth login page, outside of the application. Once successfully authenticated, you will be prompted to return back to your application, and the token will be passed back to the application. Per the OAuth standards, this is the recommended pattern, as it is the most secure. However, up until now, ArcGIS Maps SDK for Qt has only supported an embedded browser for OAuth logins. Now, with the help of Qt's Network Authorization module, version 200.8 officially brings in support for the external out-of-process browser workflow on iOS and Android platforms through the Authenticator toolkit component (only supported using the new authentication system). For full details on setup, see the Esri::ArcGISRuntime::Authentication::OAuthUserConfiguration
documentation.
Streamlined SDK installation experience
ArcGIS Maps SDK for Qt has utilized a GUI installer since the product's first release. Over time, the product has evolved and a GUI is no longer needed to select different features or modify the installation. As a result, ArcGIS Maps SDK 200.8 for Qt now utilizes a streamlined command line installation process, which is fast, easy to use, and provides all of the same options that the GUI provided. In addition, providing the SDK installation as a command line interface provides more flexibility and options to rolling out installations on a fleet of machines, which can be useful in configuring CI/CD systems. To install the SDK, the steps are to first extract the downloaded archive file, and then run the configure script from inside the archive, ensuring you accept the EULA. For example, here is the installation process on Mac:
cd ~/ArcGIS_Maps_SDK_Qt_200.8.0
./configure.sh
================================================================================
IMPORTANT: You must accept the Esri Master License Agreement before proceeding.
The agreement can be found in the 'legal' folder as 'EULA.pdf'.
Do you accept the terms of the Master License Agreement? (yes/no)
yes
If you want to automatically accept the EULA, you can pass in the -a argument: ./configure.sh -a
. Specific syntax and nuances will slightly differ depending on platform. For full details, please review the Install and set up guide.
Support for FeatureForm APIs
FeatureForm
s enhance attribute editing by guiding users with customized forms for feature layers within web maps. These customized forms contain Arcade logic, which provides unique capabilities for conditional logic and auto-calculated values, simplifying data collection for many different use cases. Feature Form APIs have been available in other Native SDKs for several releases, and are now available in ArcGIS Maps SDK for Qt, allowing you to build your own user interface. This resolves EN
Automatic dark mode detection with Calcite Style
The Calcite Style in the Toolkit now will automatically recognize when the system switches between light and dark mode, and will update accordingly. No code changes are required to get this new behavior. To opt-out of the new behavior, you can set Calcite.use
.
Local Server
ArcGIS Maps SDK for Local Server is deprecated. The last release of Local Server will be ArcGIS Maps SDK for Local Server 200.8. For more information, see the deprecation announcement.
ArcGIS Maps SDK for Local Server 200.8 is an incremental compatibility release that provides support for geoprocessing and map packages created with ArcGIS Pro 3.5.
ArcGIS Maps SDK for Qt 200.8 supports:
- ArcGIS Maps SDK for Local Server 200.8
- ArcGIS Maps SDK for Local Server 200.6
- ArcGIS Maps SDK for Local Server 200.1
- ArcGIS Runtime Local Server SDK 100.15
By default, Qt Maps SDK version 200.8 will use Local Server SDK version 200.8. You can use an alternative version by setting the install path. For example, the code below will tell the API to use the developer installation of the Local Server SDK version 200.1:
LocalServer::setInstallPath("c:/Program Files/ArcGIS SDKs/LocalServer200.1");
When deploying your application, ensure your Local Server deployment directory is included at the location specified by the install path property. For more information see the Deploy Local Server guide topic.
Breaking API changes
There are no breaking API changes with this release.
Behavior changes
- With this release,
GeometryEngine::reshape()
now supports true curves. - With ArcGIS Online now supporting true curves, you can now apply edits to circular arcs in an ArcGIS Online hosted feature service.
- The
wkt2
string description of aSpatialReference
is now read in preference overwkt
forFeatureLayer
s andGeodatabase
s and is also contained in theirSpatial Reference
output json. JSON
method now serializes properties from theSerializable.to JSO N() unknown
collection.JSON - This is the last release where creating an
IntegratedMeshLayer
using theArcGISSceneLayer
constructor workflow is supported. Starting from next release, it is recommended that you use theIntegrated
constructor to create a layer of that type.Mesh Layer
Deprecations
API deprecations
-
All legacy authentication classes are deprecated and will be removed in a future release. All new authentication classes are in the
Esri
namespace, and all headers are in a new::ArcGIS Runtime ::Authentication Authentication
include folder. Header guards have been added to ensure that the legacy and new systems cannot be mixed, and all legacy headers are marked deprecated with the QRT_DEPRECATED macro, which will raise compiler warnings. -
All classes that contain setters and constructors that take a
Credential
are now deprecated. The new authentication system no longer supports setting credentials directly on an object, and instead relies on responding to authentication challenges. -
The
geometry
signal on all subclasses ofChanged GeoElement
(i.e. Feature, Graphic, etc) is now deprecated. -
Support for OpenGL with Qt Quick apps on Windows and macOS is now deprecated, in favor of Direct3D and Metal respectively. Direct3D and Metal are the preferred rendering APIs for Windows and macOS, and are the default rendering target in Qt. Logging has been added to help identify if you are still using OpenGL. If you determine you are, ensure you aren't explicitly opting into OpenGL, such as through an environment variable or a line of code like this
Q
. Note Qt Widgets still support OpenGL for Linux, Windows, and macOS.Quick Window ::set Graphics Api( QSG Renderer Interface ::Graphics Api ::Open G L); -
The AuthenticationView toolkit component is deprecated, in favor of Authenticator. Authenticator supports both the new and legacy authentication system, allowing for easy app code migration.
- The
UtilityNetwork
constructors withURI
are deprecated and will be removed in a future release. Use the constructor that accepts aServiceGeodatabase
instead. unknown
andJSON unsupported
properties have been deprecated from the JsonSerializableJSON JsonSerializable
interface and objects which follow a similar pattern. Use theJSON
instead to get all JSON data for an object. SinceSerializable.to JSO N() Map
andScene
objects can be large and expensive to parse and serialize, a newunused
property has been added specifically to those root objects.JSON
-
The
FeatureSubtype::domains()
property is deprecated and will be removed in a future release. Use theField::domain()
in theFeatureSubtype::fieldOverrides()
instead. -
Integrated
enum value is deprecated fromMesh SceneLayerDataType
. -
OpenStreetMap (OSM) basemaps are in mature support and will no longer be updated. They will be removed in a future version of the ArcGIS Maps SDK for Qt. For more information, see the Overture Maps Data in ArcGIS blog. We recommend that you replace your OSM
BasemapStyle
with the equivalent Open Basemap styles, as follows:OSM Basemap style Open Basemap style OSMStandard openOSMStyle OSMStandardRelief openOSMStyleRelief OSMStandardReliefBase openOSMStyleReliefBase OSMStreets openStreets OSMStreetsRelief openStreetsRelief OSMLightGray openLightGray OSMLightGrayBase openLightGrayBase OSMLightGrayLabels openLightGrayLabels OSMDarkGray openDarkGray OSMDarkGrayBase openDarkGrayBase OSMDarkGrayLabels openDarkGrayLabels OSMStreetsReliefBase openStreetsReliefBase OSMBlueprint openBlueprint OSMHybrid openHybrid OSMHybridDetail openHybridDetail OSMNavigation openNavigation OSMNavigationDark openNavigationDark
BingMapsLayer
andBingMapsLayerStyle
are now deprecated and will be removed in a future version of ArcGIS Maps SDK for Qt. Microsoft has deprecated Bing Maps for Enterprise, which will retire and be replaced by Azure Maps on June 30, 2028. As a result, use of Bing Maps in ArcGIS Maps SDK for Qt is also deprecated. You can migrate from Bing Maps to Azure Maps by following the instructions in the Microsoft Azure documentation.
OS and framework deprecations
There are no OS or framework deprecations with this release.
Issues resolved
Issues addressed in this release are listed below.
- Memory leak issues that occur when reloading a mobile map with a
UtilityNetwork
could lead to failures in trace operations. UtilityNetworkValidationJob
does not propagate server errors when it is unable to acquire a lock.UtilityNetworkValidationJob
encounters failures when provided with an extent that includes m-values.FeatureLayer::floorDefinition
property is not honored by a floor-awareSubtype
when included in a web or mobile map.Feature Layer ContingentValuesDefinition
fails to load with version 11.5 ArcGIS Enterprise reference feature services- Issue reported on Esri Community: Rapid zooming in using the mouse wheel causes a much higher zoom level than expected.
- Unable to evaluate
Feature
Arcade function referencing aSet By Name() SubtypeFeatureLayer
in pop-ups. - The
ServiceFeatureTable::undoLocalEditsAsync()
andServiceGeodatabase::undoLocalEdits()
methods fail to revert the addition of features in a change-tracked non-spatial table.
Layer
s configured with custom dictionaries do not display on the map when parsing dictionary version in a web style.- BUG-000174246 - When drawing a graphic line with static rendering mode, unnecessary graphics are drawn along with the graphic line in a 3D
SceneView
.
- BUG-000177720 - Calling
setAttributionTextVisible()
does not work and causes crash.
Known issues
Known issues or limitations for this release are listed below.
- BUG-000152185 - Query fails when using a large geometry in (only in ArcGIS Runtime Local Server SDK or ArcGIS Maps SDK for Local Server).
- Workaround: Use GeometryEngine.Generalize() method to reduce the size of the request. In general, we recommend using the mobile geodatabase format instead of the Local Server component.
- BUG-000174311 - Space character replaced with + symbol when applying edits (only in ArcGIS Runtime Local Server SDK or ArcGIS Maps SDK for Local Server).
- Workaround: Use client-side logic to validate user attribute entry and avoid spaces in attribute strings. Alternatively, implement server-side post-processing logic to validate attribute strings and replace "+" characters. In general, we recommend using the mobile geodatabase format instead of the Local Server component.
Changes in samples
- All samples have been updated to use the new Authentication system.
- Utility network samples have been updated to use the
ServiceGeodatabase
constructors. - Show popup and Configure clusters samples have been updated to use the new
PopupView
. - New sample: Snap geometry edits with rules
Related topics
- System requirements for 200.8
- Install and set up
- Display a map (Tutorial)
- Product Life Cycle (Esri Support Site)