Version 200.4 of the ArcGIS Maps SDKs for Native Apps brings valuable new features, including support for feature forms and OGC 3D Tiles, plus enhancements with the addition of snapping to the geometry editor and the expansion of clustering to include graphics overlays. Furthermore, we are excited to announce the upcoming public beta release of the ArcGIS Maps SDK for Flutter. This latest Native Maps SDK enables you to integrate ArcGIS mapping and analytics capabilities into your Flutter apps.
Geometry editor snapping
The Geometry Editor now supports snapping to existing features when interactively creating and editing geometries! Snapping enables users to more easily create feature geometries that connect and are coincident, so that interactive edits are more accurate, without overlaps, gaps, and errors, helping to eliminate those dreaded slivers and dangles!
When snapping is enabled via the new snap settings class, visual cues indicate to the user when edits have snapped to features. Layers participate in snapping as snap sources configured in the new snap source settings class. Snapping can be used during interactive edits that move existing vertices using the vertex tool. It is also supported for adding new vertices for input devices with a hover event (such as a mouse move without a mouse button press). And in a future release, we plan to bring precise editing to mobile devices and touch-based devices with a reticle style control that appears on tap and hold.
The Geometry Editor was first introduced with the 200.0 release of the ArcGIS Maps SDK for Swift, and then included in the ArcGIS Maps SDKs for Java, Kotlin, .NET, and Qt in the first half of 2023. For those of you coming from the ArcGIS Runtime SDKs, the Geometry Editor is built from the ground up to be the successor to Sketch Editor and brings more comprehensive vertex, edge, and multipart selection methodology along with finer-grained control over the editing experience. It paved the way for enhanced geometry editing capabilities, such as the addition of snapping in this release, and there’s much more to come.
Feature form attribute editing
Feature forms streamline the feature attribute editing experience across the ArcGIS system and are the new framework for editing feature attributes in the Native Maps SDKs, where you might have previously used editable popups.
With this release, feature forms are now supported in the ArcGIS Native Maps SDKs for .NET, Kotlin, and Swift. Often referred to as ‘smart forms’ because they can adapt depending on the data being entered, feature forms are typically defined by the data owner for one or more feature layers in maps (shared as web maps for online workflows, and mobile maps for offline workflows).
Crucial data integrity behavior such as whether null values are allowed, whether a default value is defined, and whether the field has a defined list of valid values, will determine which forms elements the form contains and how elements appear, guiding editors to the correct fields and allowable attribute values for each editable field.
New APIs support reading and understanding any feature form definitions in the map, so your UI can display appropriate components to reflect the data types and required behavior. To save you time, the open-source toolkit for each SDK will also provide an out-of-the-box feature form editing experience with a new FeatureFormView component which you can integrate directly into your apps. This provides a convenient way to add attribute editing capabilities to your apps without writing lots of code. The toolkit component supports a variety of control types for accepting input attribute values, including single-line and multi-line text boxes, multiple choice controls (such as combo boxes and radio buttons), on/off switches, and a date-time picker control. These editing controls can be arranged and organized into groups and support custom Arcade expressions to control whether form controls are visible, editable, or require a value. Arcade expressions can also be used to compute the value for an attribute (perhaps based on the value of other attributes). Of course, if you need a more specific attribute editing UI and user experience tailored to your workflow, you can use the API to read the form definition from a feature layer in a map and build a focused UI that fits your requirements.
Support for feature forms in the remaining ArcGIS Maps SDKs for Qt and for Flutter (upcoming beta) is on the roadmap for a future release.
OGC 3D Tiles layer
The 3D Tiles Open Geospatial Consortium (OGC) standard defines a spatial data structure and a set of tile formats designed for streaming and rendering 3D geospatial content. It is widely used by a variety of industries and support for this standard with a new OGC 3D Tiles layer further enhances the interoperability of your 3D apps built with the Native Maps SDKs. The 3D Tiles standard includes support for representing 3D data as continuous meshes or discrete 3D objects in a hierarchical cache structure for streaming via services or reading directly from tilesets on disk. This means you can work with the new Ogc3DTilesLayer type just as you would any other layer in a scene, with support for adding directly from service URLs, via portal items that reference a service URL, or local files.
The new 3D Tiles layer complements existing 3D layer types based on the OGC I3S specification, such as Integrated Mesh Scene Layer and 3D Object Scene Layer, supporting similar behaviors and can even participate in advanced capabilities like the interactive 3D analyses viewshed and line of sight.
You can read more about 3D Tiles support in the Native SDKs in this blog post, and for information about publishing your own 3D Tiles layers see the Tile layers topic in the ArcGIS Online documentation.
Clustering improvements
Clustering dynamically aggregates point features that are geographically close to each other into single symbols to avoid overwhelming users with dense, visually overlapping data and instead providing a more intuitive experience where data is progressively revealed as you focus in on a specific area.
Clustering in the Native Maps SDKs has been enhanced in this release to include support for graphics with point geometry in a graphics overlay.
In addition, there are new APIs to select and highlight an aggregate geoelement (the base type for features and graphics) in a clustered feature layer or graphics overlay and get access to the underlying collection of clustered geoelements. This enables the user to select a cluster, see the selected cluster highlighted on the map, and then drill-down to access clustered geoelements.
Aggregate fields, added in the previous release, are custom fields you can define on a cluster to aggregate values from all the contained geoelements. When defining an aggregate field, specify a field in the underlying data that you want to aggregate and then choose the type of statistic you want to derive. One option is simply the count of all geoelements in the cluster, but you can also pick from a choice of classic statistical methods including average, standard deviation, or sum. Additionally, you can use Arcade to define an expression that will be applied to each geoelement and will resolve to a number or string to which your chosen statistical method will be applied. In this way, your Arcade expression can perform other single or multi-field calculations, or even spatial operations, to be summarized.
Apple App Store privacy manifests
Last year, Apple announced that new privacy manifests would be required for third-party SDKs and developers will need to declare approved reasons for using a specific set of APIs in the privacy manifest for their app. These changes are all part of ensuring more secure app delivery by helping developers better understand how third-party SDKs use data, with the goal of providing additional privacy protection for users.
Starting May 1, 2024, Apple will require developers to deliver both a privacy manifest and justifications for private API usage. To help you provide this information to Apple, with this release we’re including a privacy manifest with the ArcGIS Maps SDK for Swift that can be incorporated into your Xcode projects. This release also provides resources for our cross-platform ArcGIS Maps SDKs for .NET and Qt to enable you to continue distributing apps via the Apple App Store.
For more information, see the Deployment topic in your chosen Native Maps SDK:
Composable components for Kotlin
Compose is the recommended modern approach for building Android native UIs with Kotlin, simplifying and accelerating UI development on Android. To enable you to take full advantage of this approach with our Kotlin Maps SDK, we have introduced composable versions of the 2D map view and 3D scene view controls via the open-source toolkit. The new GeoView-Compose module provides Composable implementations of the MapView and SceneView with a Compose-idiomatic API. Increasingly the samples and tutorials in our Developer Guide will all focus on Composable too, and while we’ll continue support the old patterns for working with map and scene views in Kotlin, we recommend adopting composable wherever you can to help you build modern Android apps with Kotlin.
Beta release of ArcGIS Maps SDK for Flutter
Created by Google almost ten years ago, and one of the most popular cross-platform mobile frameworks today, Flutter is an open-source framework for building natively compiled, multi-platform apps from a single codebase.
We have now released the first beta of the ArcGIS Maps SDK for Flutter, and we hope to have the first production release in November 2024 with version 200.6 of the Native Maps SDKs. You can join the beta through the Esri Early Adopter site here where we host SDK downloads, documentation, and forums for providing feedback.
This first beta includes significant capabilities, with support for building 2D mobile apps for Android and iOS and developing on macOS. But it’s built on top of the same high performance native runtime as the other ArcGIS Maps SDKs for Native Apps which means we’ll be able to rapidly reach parity with the other Native Maps SDKs. Additional features on the roadmap include OAuth 2.0 authentication, 3D visualization, and web request caching, all in a first-class Flutter development experience.
[ This blog post has been updated now that the first beta of the ArcGIS Maps SDK for Flutter has been released. ]
ArcGIS Maps SDK for Java deprecation
The ArcGIS Maps SDK for Java is deprecated and version 200.6, which is planned for release in November 2024, will be the last release.
Since the launch of ArcGIS Runtime SDK for Java over 10 years ago (renamed ArcGIS Maps SDK for Java in December 2022), there has been a gradual decline in the popularity and use of the Java FX framework used by the ArcGIS Maps SDK for Java for developing desktop client applications. We’ve seen the application development landscape increasingly shifted towards a mobile-first, multi-platform approach, using technologies backed and supported by established firms such as Apple, Google, Microsoft, and the Qt Company. Consequently, the ArcGIS Maps SDK for Java has gradually taken a backseat to its platform-specific and cross-platform Native Maps SDKs counterparts: Kotlin, Swift, .NET, Qt, and coming soon, Flutter.
To find out more about the deprecation and what it means for your app development, please refer to the Technical Support article.
Licensing changes
A Utility Network extension license is no longer required to analyze (trace) utility networks. The trace operation on a utility network is now available at the ArcGIS Runtime Lite license level.
A new Advanced Editing extension license is now required to edit utility network features, validate topology in a utility network, create versions in a branch versioned geodatabase, and edit a version in a branch versioned geodatabase. For 200.4 this applies to creating new versions (online only) or editing feature services backed by a branch versioned geodatabase (online or offline, using replicas). This extension requires a minimum ArcGIS Runtime license level of Basic.
Other improvements
In addition to these headline new features and enhancements, we’ve included 3rd party updates, bug fixes, and performance improvements, as well as many other notable enhancements in this release:
- Dynamic entity tracks now include the entity ID, allowing you to render tracks individually for different entities for a more focused user experience.
- Support for new date-only, time-only, and time-offset data types (see this blog post for more details).
- Support for relative date and time queries.
- Support for Arcade 1.26.
- Projection engine updates.
- World scale Augmented Reality (AR) is now included in the open-source Toolkit for the Swift Maps SDK.
- The Kotlin SDK has now added network interceptors.
- Many new and improved Guide topics, tutorials, and samples…
Download and get started
To get the latest version, update the reference to your Native Maps SDK of choice via NuGet, Gradle for Java or Kotlin, or the Swift Package Manager or alternatively go to the ArcGIS Developers website to download. If you are new to developing with the ArcGIS Maps SDKs for Native Apps, the SDKs for .NET, Java, Kotlin, Qt, and Swift have extensive guide documentation, API reference, tutorials, and samples. Simply sign up for a free ArcGIS Developer account and get access to everything you need to develop your app.
[ This blog post has been updated with links to the dedicated 3D Tiles Layer and DateTime field blog posts. ]
Article Discussion: