Release notes for 200.1

This page provides details about enhancements in the 200.1 release of ArcGIS Maps SDK for Kotlin. It also lists deprecations, resolved issues, known issues, and more.



Feature tiling enhancements

Version 200.1 introduces a new feature tiling mode, FeatureTilingMode.EnabledWithFullResolutionWhenSupported . This provides an opt-in experience for developers to request high resolution geometries from a service. To opt-in, developers can set the feature tiling mode using the LoadSettings property on the GeoModel or on the individual layer.

This mode requires the service to support edit quantization mode (supportsQuantizationEditMode = true), which returns all vertices of the source geometry in a high resolution. Use this mode for workflows that benefit from precise geometry editing, such as snapping feature geometries without loading the feature.

New GeometryEditor class

A new GeometryEditor class provides a simple way to create or edit geometries interactively in a map view. It supports a wide array of use cases, from creating quick notes on a map to allowing feature geometry editing workflows. The interactive use of GeometryEditor is complemented by its support for programmatic creation and editing methods, providing a powerful way to guide and supplement the built-in UX workflows. The appearance of the edited geometry can be customized using the range of symbology available in the API. It is the foundation for additional geometry editing capabilities that will roll out in future releases.

The GeometryEditor is built from the ground up as the successor to SketchEditor in the ArcGIS Runtime SDK for Android. It introduces a new vertex and edge selection methodology, along with finer-grained control over editing. It is the foundation for additional geometry editing capabilities that will roll out in future releases.

Scenes (3D)

Edge rendering

With this release, visualization of edges on 3D Object Scene Layers is available for iOS and Mac Catalyst apps built with ArcGIS Maps SDK for .NET or ArcGIS Maps SDK for Swift. Support for visualization of edges was first introduced in the Native Maps SDKs at version 200.0 but was only available for apps deployed to Android, Linux, macOS, and Windows operating systems.

Performance improvements

The performance of the scene view control when there is no user interaction has been improved by approximately 20 percent. This results in lower CPU consumption when the scene view is inactive and a corresponding reduction in battery usage for mobile devices.

The scene layer data loading pattern for desktop platforms has been optimized to prioritize loading content in the foreground while continuing to load coarser levels of detail (LoDs) in the background. This results in a significant reduction in the initial time it takes to render a scene layer.

Utility network

Expanded support for offline traces

This release includes expanded support for tracing while disconnected from a utility network service. Water and gas utility networks can now use the isolation trace type and subnetwork-based traces (subnetwork, upstream, and downstream traces) on hierarchical networks. Aggregated geometry results are also supported while tracing offline, providing a more efficient way to visualize trace results in a map view or scene view.

Nearest neighbor filter

When tracing while connected to a feature service, the results of a nearest neighbor filter can also be accessed, allowing an app to determine if all of the requested neighbors were found.

More trace configuration options

Three new trace configuration options are supported when tracing in either connected or disconnected environments:

Add trace conditions using categories

A new constructor for the UtilityCategoryComparison class makes it even easier to add trace conditions using utility network categories.

Examine network rules

Version 200.1 supports querying and inspecting utility network rules using the new UtilityNetworkDefinition.getRules() method. Rules define what combinations of UtilityAssetTypes and UtilityTerminals can connect to, attach to, or contain other asset types and terminals, increasing the data integrity within the utility network.


Floor awareness map support in Map SDK

According to the ArcGIS Indoors Information Model, floor-aware maps and scenes require a LEVEL_ID for floor information. With this release of ArcGIS Maps SDKs for Native Apps, an IndoorsLocationDataSource outputs a LEVEL_ID value in addition to VERTICAL_ORDER, allowing developers to directly use the IndoorLocationDataSource output as an input to floor aware maps and scenes. To take advantage of this enhancement, the URL of the LEVEL table needs to be provided to the IndoorsLocationDataSource, without which only VERTICAL_ORDER will be output.

See ArcGIS Indoors Information Model in the ArcGIS Pro documentation for more information.

Enhanced path snapping

The path snapping algorithm in the IndoorLocationDataSource is improved in this release. The snapped position is now more accurate and more consistent with less jumping between adjacent pathways.


Labeling properties manual

A new guide topic helps map authors understand how ArcGIS Pro labeling properties are translated into ArcGIS Maps SDK for Native Apps labeling properties.

Line orientation property for label definitions

A LabelDefinition.lineOrientation property has been added to allow users to modify the placement of line labels to the Left or Right of the digitized line feature, rather than Above or Below the line feature.

Breaking API changes

  • Some API names, default arguments, and nullability have been modified to follow Kotlin guidelines
  • Use of kotlinx.datetime.Instant in the API is replaced with java.time.Instant
  • Some immutable list properties are modified to be StateFlow<List> in order to observe changes to the property (for example, PreplannedMapArea.packageItems)
  • The OAuthUserConfiguration constructor parameter types have changed:
    • culture is now of type Locale
    • refreshTokenExpirationInterval is now of type RefreshTokenExpirationInterval and has a default value of RefreshTokenExpirationInterval.Default
    • refreshTokenExchangeInterval is now of type RefreshTokenExchangeInterval and has a default value of RefreshTokenExchangeInterval.Never
    • federatedTokenExpirationInterval is now nullable and has a default value of null (meaning the default interval will be used)
  • Some classes that cannot be extended are marked as sealed. Constructors for these classes are replaced by factory methods to create them (for example: DisplayFilter.createWithNameAndWhereClause(name: String, whereClause: String))
  • Constructors that take BitmapDrawable parameters are now non-suspending factory functions (for example: PictureFillSymbol.createWithImage(image: BitmapDrawable))
  • Synchronous methods that throw exceptions are annotated with throws annotation in the API reference documentation (for example: FeatureTable.createFeature())
  • Synchronous methods that return null in lieu of an exception have been renamed accordingly (for example: GeometryEngine.projectOrNull(Geometry, SpatialReference))

Behavior changes

  • GeometryEngine.nearestCoordinateGeodetic() does not support curve geometries. This method may produce incorrect results in previous releases when using geometry with true curves. This behavior is corrected in this release and the method now throws an `ArcGISRuntimeException` if the geometry parameter contains true curves. This behavior matches other `GeometryEngine` methods that do not support true curves. Support for using true curves with this method may be added in a future release.
  • Read-only feature layers now have feature tiling enabled by default when the service supports it.
  • Navigating a route using the route tracker when working with ArcGIS location services accessed with an API Key is now available with a Lite License.


API deprecations

  • Support for rendering 3D scenes on Android with OpenGL ES 3.0 and 3.1 is deprecated. The last release to support these versions is version 200.1. A minimum of OpenGL ES 3.2 will be required at the next release for rendering 3D scenes on Android.

OS and framework deprecations

  • Support for macOS Big Sur 11 is deprecated. The last release to support macOS Big Sur 11 is version 200.1. A minimum of macOS Monterey 12 will be required at the next release.

Issues resolved

Issues addressed in this release are listed below.

  • The 3rd-party Libtiff library has been upgraded to 4.5.0.
  • BUG-000153386 Fixed an issue where SubtypeFeatureLayers weren't honoring a map's reference scale.
  • BUG-000153429: Label fails to display correctly in a Union multipart feature.
  • BUG-000154742: Landscape image service fails to load with parsing error.
  • BUG-000154811: Feature link annotation with a vertical display of labels stored in a mobile geodatabase is showing inconsistent behavior in ArcGIS Maps SDK for .NET.
  • BUG-000155484 Fixed an issue loading SubtypeFeatureLayers when a feature service has label definitions.
  • ENH-000099317/ENH-000099318: WMTS layers with dimensional data are now supported. The default dimension value is used if provided by the service. Otherwise, the first value listed is used.
  • Question on Esri Community Offline packages with non-ASCII characters in the path cannot be opened and read.

Known issues

Known issues or limitations for this release are listed below.

  • Streamed Data (Dynamic Entities API) is not supported
  • SDK view components such as Callout, and Magnifier are not supported
  • Single pointer double-tap followed by vertical drag on 3D scenes is not supported
  • DefaultAuthenticationChallengeHandler is not supported
  • Augmented Reality and other open source toolkit UI components are not supported
Obfuscate and optimize your app

To obfuscate and optimize your app, set minifyEnabled to true in the build.gradle of your app module. If you are using Android Gradle Plugin v8.0.0 and above, you must also add the following details to your app's proguard rules:

Use dark colors for code blocksCopy
# JSR 305 annotations are for embedding nullability information.
-dontwarn javax.annotation.**

# A resource is loaded with a relative path so the package of this class must be preserved.
-adaptresourcefilenames okhttp3/internal/publicsuffix/PublicSuffixDatabase.gz

# Animal Sniffer compileOnly dependency to ensure APIs are compatible with older versions of Java.
-dontwarn org.codehaus.mojo.animal_sniffer.*

# OkHttp platform used only on JVM and when Conscrypt and other security providers are available.
-dontwarn okhttp3.internal.platform.**
-dontwarn org.conscrypt.**
-dontwarn org.bouncycastle.**
-dontwarn org.openjsse.**

Add these lines to the file at the module level of your app project. In our tutorials, for example, that file would be in the app directory.

Changes in samples

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