This page provides details about enhancements in the 200.0 (Beta) release of ArcGIS Maps SDK for KotlinIt also lists deprecations, resolved issues, known issues, and more.
Enhancements
ArcGIS Maps SDK for Kotlin (Beta)
ArcGIS Maps SDK for Kotlin is the next generation library for building powerful mapping applications for Android devices using the features and patterns of Kotlin. It succeeds the ArcGIS Runtime SDK for Android while sharing much of the underlying architecture, capabilities, and concepts adapted to support the latest Android developer technology trends.
Aligned with Kotlin
Kotlin is a modern programming language that is expressive, concise, safe, and interoperable. Android has committed to a Kotlin-first approach for all of its new tools and libraries development which aligns well with ArcGIS Maps SDK for Kotlin.
ArcGIS Maps SDK for Kotlin embraces language features such as null safety, default parameters, higher-order functions, coroutines, and flows to create an intuitive experience for Kotlin developers.
Structured concurrency
Structured concurrency is a programming paradigm aimed at improving clarity, quality and development time using a structured approach to asynchronous programming.
Kotlin and Android have brought this paradigm to the forefront via coroutines libraries and ArcGIS Maps SDK for Kotlin has fully adapted to support the new programming paradigm in the development of next-generation mapping applications.
Networking and authentication
ArcGIS Maps SDK for Kotlin uses OkHttp for all its network-related operations. It's a standard HTTP library used by many modern Android applications and has built-in support for various authentication types.
ArcGIS Maps SDK for Kotlin also uses a new re-designed authentication architecture to support the various security configurations supported by ArcGIS software.
Jetpack Compose
Jetpack Compose is Android's modern UI toolkit for building native apps with a declarative style. Currently Map
and Scene
components are still traditional Android views which can be wrapped in AndroidView to support Jetpack Compose. Other composable UI components will be available in upcoming releases.
Scenes (3D)
Edge rendering
Visualization of edges is now supported for 3D Object Scene Layers, which are typically used to represent buildings in your 3D scenes. Edge rendering helps you create stunning scenes with more detail and improves user depth perception. With this release, the Solid
edge style is supported to accentuate and stylize the visually important edges, including substructures, exterior walls, balconies, and roofs. Edges of type Solid
are rendered in a single color and are unaffected by scene lighting. Edge rendering is supported in apps built with ArcGIS Maps SDKs for Native Apps running on Android, Linux, macOS, or Windows. Support for this feature on iOS is planned for a future release. The Sketch
edge style, resembling hand-drawn sketched lines, is not currently supported and will be rendered as solid edges.
Utility networks
Run utility network traces offline
ArcGIS Maps SDKs for Native Apps can now run utility network traces (connected, subnetwork, upstream, and downstream) in a fully disconnected environment. You can create and fine-tune trace configuration options, or leverage named trace configurations to support even more complex traces while offline. The trace result types supported with offline utility networks are elements and functions. Offline tracing requires a mobile geodatabase with full utility network topology. These can be created using ArcGIS Pro as a standalone mobile geodatabase. In the future you will be able to create sync-enabled mobile geodatabases containing utility network topology using the OfflineMapTask
or GeodatabaseSyncTask
, or with offline map areas.
In this release, you can use the Utility
to determine which utility network operations are available with your data. For example, a sync-enabled mobile geodatabase created with ArcGIS Enterprise 10.9 containing utility networks supports querying associations but not tracing. However, a standalone mobile geodatabase exported with ArcGIS Pro 2.9 or later that includes a full utility network supports both querying associations and tracing.
Labels and annotation
Vertical text can display upright CJKV characters
Annotation features and labels displayed using ArcGIS Maps SDKs for Native Apps can now have their character glyphs rotated in place to appear vertically. This is primarily intended for Asian text (including Chinese, Japanese, Korean, and Vietnamese). It requires that the annotation be published from ArcGIS Pro with the text symbol's block progression property set to right to left, and that the layout of the overall text is closer to vertical than horizontal. See Text symbol properties in the ArcGIS Pro documentation for more information.
Indoor positioning
Positions are restricted to the surveyed area
In previous releases, indoor positions were interpolated for areas outside of the Indoor Positioning System (IPS) survey. Positions are now only shown for areas that have been surveyed.
Quality improvements
- Better compatibility with
Route
Tracker Location Data Source - More consistent ordering of
IndoorsLocationDataSource
time stamps - Improvements to positional accuracy and floor level estimation
Arcade
Support for Arcade 1.20
ArcGIS Maps SDKs for Native Apps now support Arcade 1.20. For more details, see the Arcade 1.20 release notes. Some enhancements include:
- New functions: StandardizeGuid and HasValue.
- A new profile for QuickCapture.
Note that the enhancement to the GetUser function to accept zero arguments always returns null, since ArcGIS Maps SDKs for Native Apps do not have the concept of an active portal.
Improved consistency with the online implementation
A trailing comma is now consistent with the online Arcade implementation. For example:
- Function definitions
function my
Fn(a,b,c,) {} - Function calls
my
Fn(10, 11, 12,) - Array literals
[1,2,3,]
- Dictionary literals
{ hello
:"world", good :"night", }
The checker that determines where function definitions are allowed has been improved. These checks are now consistent with the online implementation and prevent edge cases that could cause confusion around scoping rules. Function definitions within while
statements, inside other function definitions, and codeblocks of if
statements are not allowed.
Breaking API changes
- All API that was deprecated in 100.x has been removed in this release.
- In Arcade 1.20, the terms
import
andexport
are now keywords and are no longer available for use as variable or function names in an Arcade script.
Behavior changes
- Arcade expressions now support case insensitive lookup of attribute names for
Graphic
s (as they already do forOverlay Feature
s)Layer - If a
Label
expression attempts to use an attribute that does not exist, then no label will be produced (rather than assuming an angle of 0). This behavior is consistent with theDefinition. Angle Label
that produces the text.Definition. Expression
Deprecations
API deprecations
There are no API deprecations with this release.
OS and framework deprecations
There are no OS or framework deprecations with this release.
Issues resolved
- Third Party library
libexpat
has been upgraded to v2.5.0 - Third party library
zlib
has been upgraded to v1.2.13
Known issues
- SDK view components such as AttributionBar, Callout, and Magnifier are not supported
- Freehand and shape sketching are not supported
- Single pointer double-tap followed by vertical drag on 3D scenes is not supported
Default
UI component is not supportedAuthentication Handler - Augmented Reality and other open source toolkit UI components are not supported
- The API in the following packages are subject to change for final release (for example, to include default parameters)
- Arcade, Geotrigger, Hydrography, OGC, Popup, Navigation, and some Layer types
Changes in samples
New samples
The 200.0 Beta release of the ArcGIS Maps SDK for Kotlin includes a number of new samples showcasing common patterns of the API. These can be found on the ArcGIS Maps SDK for Kotlin Sample code page.
Enhancements
In this release, samples come with a data provisioning handler that allows users to automatically provision offline data used by the samples.
Related topics
- System requirements for 200.0
- Install and set up
- Display a map (tutorial)
- Product Life Cycle (Esri Support Site)