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.
Enhancements
Geometry
Feature tiling enhancements
Version 200.1 introduces a new feature tiling mode, Feature
. 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 (supports
), 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 Sketch
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:
-
UtilityTraceConfiguration.allowIndeterminateFlow
-
UtilityTraceConfiguration.includeUpToFirstSpatialContainer
-
UtilityTraceConfiguration.validateLocatability
Add trace conditions using categories
A new constructor for the Utility
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 Utility
s and Utility
s can connect to, attach to, or contain other asset types and terminals, increasing the data integrity within the utility network.
Improved support for offline utility networks
The 200.1 release of the ArcGIS Maps SDKs for Native Apps now supports tracing of utility networks taken offline from an ArcGIS Enterprise 11.1 feature service when the recommended patches are installed to the Enterprise server. For more information, see the offline utility networks in ArcGIS Maps SDKs for Native Apps blog article.
Indoors
Floor awareness map support
According to the ArcGIS Indoors Information Model, floor-aware maps and scenes require a LEVEL
for floor information. With this release of ArcGIS Maps SDKs for Native Apps, an IndoorsLocationDataSource
outputs a LEVEL
value in addition to VERTICAL
, allowing developers to directly use the Indoor
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 Indoors
, without which only VERTICAL
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 Indoor
is improved in this release. The snapped position is now more accurate and more consistent with less jumping between adjacent pathways.
Labels
Labeling properties manual
A new guide topic helps map authors understand how ArcGIS Pro labeling properties are translated into ArcGIS Maps SDKs 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.
in the API is replaced withInstant java.time.
Instant - Some immutable list properties are modified to be
State
in order to observe changes to the property (for example,Flow <List > Preplanned
)Map Area.package Items - The
O
constructor parameter types have changed:Auth User Configuration culture
is now of typeLocale
refresh
is now of typeToken Expiration Interval Refresh
and has a default value ofToken Expiration Interval Refresh
Token Expiration Interval. Default refresh
is now of typeToken Exchange Interval Refresh
and has a default value ofToken Exchange Interval Refresh
Token Exchange Interval. Never federated
is nowToken Expiration Interval nullable
and has a default value ofnull
(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:
Display
)Filter.create With Name And Where Clause(name : String, where Clause : String) - Constructors that take
Bitmap
parameters are now non-suspending factory functions (for example:Drawable Picture
)Fill Symbol.create With Image(image : Bitmap Drawable) - Synchronous methods that throw exceptions are annotated with
throws
annotation in the API reference documentation (for example:Feature
)Table.create Feature() - Synchronous methods that return
null
in lieu of an exception have been renamed accordingly (for example:Geometry
)Engine.project Or Null( Geometry, Spatial Reference)
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 anArcGIS
if the geometry parameter contains true curves. This behavior matches otherRuntime Exception Geometry
methods that do not support true curves. Support for using true curves with this method may be added in a future release.Engine - 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 is now available with a Lite License. It also requires that you set the API Key with an access token that has the
Routing
privilege,
Deprecations
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
Subtype
s weren't honoring a map's reference scale.Feature Layer - 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
Subtype
s when a feature service has label definitions.Feature Layer - 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
, andMagnifier
are not supported - Single pointer double-tap followed by vertical drag on 3D scenes is not supported
Default
is not supportedAuthentication Challenge Handler - Augmented Reality and other open source toolkit UI components are not supported
- A utility network that is configured with the "only include simple features" option cannot be loaded from an ahead-of-time offline map. To create a map with a loadable utility network use one of the other two offline utility network options.
Obfuscate and optimize your app
To obfuscate and optimize your app, set minify
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:
# 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 proguard-rules.pro
file at the module level of your app project. In our tutorials, for example, that file would be proguard-rules.pro
in the app
directory.
Changes in samples
New samples
Maps and Scenes
- Display Composable MapView
- Display scene
- Set max extent
- Set up location-driven geotriggers
- Show device location using indoor positioning
- Show location history
- Sketch on map
Edit and Manage Data
- Add features with contingent values
- Create mobile geodatabase
- Edit feature attachments
- Generate geodatabase replica from feature service
- Generate offline map using Android Jetpack WorkManager
- Project geometry
Visualizations
Layers
Analysis
MapViews, SceneViews, and UI
Routing and Logistics
Search and Query
Utility Networks
Cloud and Portal
Enhancements
- Added reset button to Clip geometry and Cut Geometry.
- Updated
Log
tag to use the local class name. - Added support for dark/light mode for all Kotlin samples.
Related topics
- System requirements for 200.1
- Install and set up
- Display a map (tutorial)
- Product Life Cycle (Esri Support Site)