Skip to content

Release notes for 200.8

This page provides details about enhancements in the 200.8 release of ArcGIS Maps SDK for Kotlin. 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.hoveredElement and GeometryEditor.pickedUpElement properties 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.hoveredElement updates, your app UI can display a button that selects and picks up the element currently underneath the reticle, as shown below. Similarly, when GeometryEditor.pickedUpElementupdates, 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.

Hover and pick up events

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 MapViewProxy.identifyGraphicsOverlays() 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.

Geometry editor identify

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: ENH-000168892 Add ability to define the tolerance of a spatial reference.

Authentication

Identity-Aware Proxy (IAP)

ArcGIS Maps SDKs now support accessing ArcGIS Enterprise Portal and Services behind Microsoft Entra Application Proxy via Microsoft Identity Platform.

An Identity-Aware Proxy (IAP) is a security feature that enables organizations to manage access to their on-premises web applications and services based on user identity. Typically, it functions as a reverse proxy, acting as a gatekeeper to ensure that only authenticated and authorized users can access specific resources. The authentication process for IAP occurs within a web session using protocols such as OAuth, SAML, or _OpenID Connect. During this session, security tokens and cookies are generated, which remain valid throughout the session until they are invalidated.

Please read the section on IapCredential in the security guide to understand how to configure and work with Identity-Aware Proxy (IAP) in the SDK.

Enhancement to ArcGISAuthenticationChallenge

ArcGISAuthenticationChallenge now provides an enum to determine the type of authentication challenge Iap, OAuthOrToken, or Token. It helps to determine whether the authentication challenge is issued by the proxy, portal, or service.

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 ArcGISMap 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 UtilityNetwork 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 UtilityAssociations 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 FeatureFormDefinition or PopupDefinition 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 ArcGISFeatures by performing query operations on a ServiceFeatureTable or UtilityNetwork, as well as through the identify methods with FeatureLayers, 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 $FenceLayer.
  • TranslateText function is not yet supported and will be supported in a future release.

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

Augmented Reality - FlyoverSceneView

The FlyoverSceneView component uses augmented reality to render a scene that is navigated by moving the device, providing a more natural navigation experience than a mouse or touch interface. FlyoverSceneView can be customized to render any location with a variable translationFactor to control the degree to which device movement affects the movement of the scene camera. See the FlyoverSceneView toolkit component for more details.

Augmented Reality - WorldScaleSceneView

  • WorldScaleSceneView may now enter a FailedToInitialize status in WorldScaleSceneViewStatus if the component is unable to access the device sensor data.
  • WorldScaleSceneView will now receive a valid mapPoint in the SingleTapConfirmedEvent supplied by the onSingleTapConfirmed callback. This mapPoint is calculated by detecting horizontal and vertical planes at the tapped screen coordinate and converting the real-world location to a scene coordinate. If no planes are detected, the mapPoint will be null.
  • When the WorldScaleSceneView is running in WorldScaleTrackingMode.Geospatial mode, ARCore uses Google VPS when available. You can make use of two versions of the checkVpsAvailability function (with and without location parameters) available on WorldScaleSceneViewProxy to query VPS availability.
  • WorldScaleSceneView now has an onTrackingErrorChanged parameter which can be used to track transient errors after the WorldScaleSceneView has been initialized.

See the WorldScaleSceneView toolkit component for more details.

The BasemapGallery toolkit component has been enhanced to allow basemaps that come from a portal item to be marked as 3D basemaps. If the new property BasemapGalleryItem.is3D is set true, a "3D" badge is displayed on top of the basemap's thumbnail in the gallery. See the BasemapGallery toolkit component for more details.

Feature Forms

See the FeatureForm toolkit component for more details.

Overview Map

The OverviewMap toolkit component provides a small, secondary MapView (sometimes called an "inset map"), that can be superimposed on an existing MapView or SceneView, which shows a representation of the main view's current viewpoint. OverviewMap toolkit component for more details.

OfflineMapAreas

The OfflineMapAreasView toolkit component provides a composable UI to take a web map offline by downloading map areas.

You can now download map areas created ahead-of-time(preplanned) by the web map author, or create map areas on-demand by specifying an area of interest and level of detail. Map areas are downloaded to the app’s external directory and can be used when the device is disconnected from the network. You can get information about a map area such as its size and the geographic region it covers, delete a downloaded map area to free up storage space on the device or get a list of web maps that have been downloaded to the device using the OfflineRepository.offlineMapInfos property.

See the OfflineMapAreas toolkit component for more details.

Authenticator

The Authenticator toolkit component now supports Identity Aware Proxy's Sign-in and SignOut. This works out of the box when there's an IapConfiguration set on the AuthenticatorState.iapConfigurations property. See the Authenticator toolkit component for more details.

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 a SpatialReference is now read in preference over wkt for FeatureLayers and Geodatabases and is also contained in their Spatial Reference output json.
  • JSONSerializable.toJSON() method now serializes properties from the unknownJSON collection.
  • This is the last release where creating an IntegratedMeshLayer using the ArcGISSceneLayer constructor workflow is supported. Starting from next release, it is recommended that you use the IntegratedMeshLayer constructor to create a layer of that type.
  • When ArcGISEnvironment.applicationContext is set, additional information is populated into the referer header sent by authentication requests. This additional information consists of the application package name of the running app, which allows identification of the specific app via the referer. With this release the user agent will also get populated by the application package when ArcGISEnvironment.applicationContext is set.

  • The AuthenticatorState now supports managing multiple OAuthUserConfiguration instances through the new AuthenticatorState.oAuthUserConfigurations property. This enhancement allows you to configure and switch between multiple OAuth setups more flexibly, enabling richer multi-user or multi-tenant authentication scenarios.

Deprecations

API deprecations

  • The UtilityNetwork constructors with URI are deprecated and will be removed in a future release. Use the constructor that accepts a ServiceGeodatabase instead.
  • unknownJSON and unsupportedJSON properties have been deprecated from the JsonSerializable JsonSerializable interface and objects which follow a similar pattern. Use the JSONSerializable.toJSON() instead to get all JSON data for an object. Since ArcGISMap and ArcGISScene objects can be large and expensive to parse and serialize, a new unusedJSON property has been added specifically to those root objects.
  • The FeatureSubtype.domains property is deprecated and will be removed in a future release. Use the Field.domain in the FeatureSubtype.fieldOverrides instead.

  • IntegratedMesh enum value is deprecated from 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 Kotlin. 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 styleOpen Basemap style
    OSMStandardopenOSMStyle
    OSMStandardReliefopenOSMStyleRelief
    OSMStandardReliefBaseopenOSMStyleReliefBase
    OSMStreetsopenStreets
    OSMStreetsReliefopenStreetsRelief
    OSMLightGrayopenLightGray
    OSMLightGrayBaseopenLightGrayBase
    OSMLightGrayLabelsopenLightGrayLabels
    OSMDarkGrayopenDarkGray
    OSMDarkGrayBaseopenDarkGrayBase
    OSMDarkGrayLabelsopenDarkGrayLabels
    OSMStreetsReliefBaseopenStreetsReliefBase
    OSMBlueprintopenBlueprint
    OSMHybridopenHybrid
    OSMHybridDetailopenHybridDetail
    OSMNavigationopenNavigation
    OSMNavigationDarkopenNavigationDark
  • BingMapsLayer and BingMapsLayerStyle are now deprecated and will be removed in a future version of ArcGIS Maps SDK for Kotlin. 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 Kotlin 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.

  • Layers 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.

Known issues

There are no known issues or limitations for this release.

Changes in samples

New samples

Enhancements

  • Migrated 2 XML view-based samples to use Jetpack Compose, leveraging the GeoView-Compose Toolkit module.
  • Combined Add scene layer with elevation into Add scene layer from service.
  • Updated authentication samples (Authenticate with OAuth, Create and save map, Show portal user info) to showcase new 200.8 toolkit authentication workflows.
  • Updated samples to use minSDK = 28 and targetSDK = 36 to match the Kotlin SDK.
  • Migrated to Android Gradle plugin 8.9.2, compatible with Gradle version 8.14.

Your browser is no longer supported. Please upgrade your browser for the best experience. See our browser deprecation post for more details.