The ArcGIS Maps SDKs team is pleased to bring you the next update to the 200.x series of Native Maps SDKs: 200.2, and it’s full of exciting new features and important updates to existing ones.
We’ve had great feedback on the dynamic entity capabilities we introduced in the .NET, Java, Qt, and Swift SDKs with the last release and are adding to those capabilities with 200.2. Not only that, but we’re also bringing all the dynamic entities capabilities to the Kotlin SDK!
Dynamic entities bring frequently updating data directly into your maps through a robust and capable set of APIs.
The initial release of dynamic entities could attach to data streams from ArcGIS Velocity or ArcGIS GeoEvent Server. Since then, the most frequent request has been to be able to use these new dynamic entity capabilities with other data sources, and we’re pleased to announce that you can now do that now.
200.2 includes new APIs which make it easy to define a custom dynamic entity feed to deliver dynamic entities from any source. Simply provide some information about the schema of the incoming data, and implement logic to convert your custom stream into geometry and/or attributes. The SDK creates a new observation, and you automatically get the same high performance data ingestion, display, update events, observation history, purging options, etc. as before.
Other dynamic entity improvements
We’ve also deepened the integration of dynamic entities with other parts of the API. As a developer you can now connect camera controllers and interactive analyses (such as line of sight or viewshed) to a dynamic entity, automatically updating as new observations are delivered.
We’ve also spent some time working on performance improvements and optimizations. You can now specify a subset of a feed’s fields and focus on just the parts of your data stream that are important to your app. We’ve managed to reduce the memory footprint significantly by compressing attribute storage, and parsing observations is up to 4 times faster than it was at 200.1.
Now, let’s move on to 3D. Basemaps deliver the context that brings your data to life, and we have always provided a range of basemap styles for you to use with your data across all our mapping tools and SDKs. However, these basemaps have always been authored in 2D and while they work well in 3D when used with an elevation surface, they can lack a little bit of extra context.
With that in mind, Esri has created a set of 3D basemaps. These include the usual streets data you’re used to seeing in the 2D basemaps, and add global datasets of 3D buildings, 3D trees, and labels.
The 3D basemaps are currently in beta, but we expect to release them for production use later this year. The 200.2 release of the Native SDKs adds initial support for this new basemap content, starting with the 3D OSM Buildings Layer (trees and labels will come later).
Global 3D OSM Buildings layer
The 3D OSM Buildings Layer delivers detailed building models across the globe to provide better context for your 3D data. To consume this global layer of dense and detailed data in the Native SDKs without impacting performance, we’ve made a few internal improvements to support the latest I3S specifications. However, from a developer’s perspective this is just another 3D object scene layer which you display using an ArcGIS Scene Layer instance.
3D Data Filtering
Many of the use cases for these new 3D basemaps involve showcasing your own 3D data amongst the OSM Buildings. To avoid buildings conflicting with your data, we’ve added the ability to remove select portions of the 3D basemap content.
A new filtering API lets you specify either individual buildings, or a polygon outline to hide specific parts of the 3D OSM Buildings, making room for your data.
Filtering isn’t limited to 3D OSM Buildings. You can filter data in any 3D object scene layer, and even any point scene layer!
To learn more about using the OSM buildings layer and feature filtering, read this blog post published by the Native SDKs’ 3D team.
Point Feature Clustering
Authoring a map containing a lot of data can be challenging. It’s very easy for the content of a map to become overwhelming, especially when you consider multiple zoom levels, and without care your data can quickly become dense and unreadable.
One strategy for managing this clutter is feature reduction. There are a few ways do to this, and one is clustering. With clustering, the features that would be drawn on the map are considered in the context of one-another, and logic is applied to group visually dense “clusters” of features into a single map marker that represents those multiple features. This marker is rendered on the map in place of the features it represents. 200.2 introduces the ability to display point feature layers authored with clustering in a web map.
Clustering is a powerful and complex capability, and we will be enhancing our support over the next few releases. This initial support includes reading cluster renderers from web maps, identifying the features in a cluster, and an API to turn clustering on or off for individual layers. Future support will include labeling, selection and highlighting, and an API to fully control clustering directly from your code.
We introduced the Geometry Editor with the 200.1 release of the Swift, Kotlin, Java, and Qt SDKs, and 200.2 adds it to the ArcGIS Maps SDK for .NET. Geometry Editor will eventually replace the existing Sketch Editor.
We’re adding Rotate and Scale capabilities to the Geometry Editor, allowing for interactive rotation and scaling of geometry (and there are new corresponding methods for programmatically controlling rotation and scale).
The Geometry Editor also gets a new Shape Tool, simplifying the creation of predefined shapes like ellipses, triangles, rectangles, and arrows as either polylines or polygons.
Now that we have Geometry Editor across all our SDKs, we’re announcing the deprecation of Sketch Editor. Don’t worry! It’ll be around for a while, but future geometry editing enhancements will light up on the Geometry Editor.
As we added rotate and scale to the Geometry Editor, we realized we should probably add them to Geometry Engine too (and we threw in Move and Geodesic Move as a bonus).
Utility Network Offline Enhancements
Building on the initial offline tracing support included in 200.1, we’re now adding the ability to perform nearest neighbor tracing as well as loop tracing. You can trace using utility networks taken offline from Enterprise 11.1, and we’ve also improved the performance of offline tracing.
QML API deprecation
The ArcGIS Runtime SDK for Qt and ArcGIS Maps SDK for Qt have always provided two APIs: a C++ API, and a QML API. The QML API allowed you to write both your UI and business logic in QML, but over time best practices have settled on separating these. In line with this best practice recommendation, we are deprecating the QML API portion of the ArcGIS Maps SDK for Qt. You can still of course write your UI in QML, but as of version 200.5, your business logic will need to use the C++ API. To learn more, see this blog post covering the deprecation in more detail.
- Support for Arcade 1.23
- Feature templates in subtype group layers
- Qt SDK now uses Metal for rendering on iOS and macOS, Direct3D on Windows
- Java SDK now uses Metal for rendering on macOS
- Kotlin SDK includes the magnifier and callout components
Download and get started
To get your hands on the 200.2 release, go to the ArcGIS Developers web site, browse to the ArcGIS Maps SDK page of your choice and download the SDK. You can also reference the SDK through NuGet, Gradle for Java or Kotlin, or Swift Package Manager. If you’re new to developing with the ArcGIS Maps SDKs for Native Apps, each SDK (.NET, Qt, Java, Kotlin, and Swift) has rich guide documentation, API Reference, Tutorials, and samples. Simply sign up for a free ArcGIS Developer account and you’ll be able to access everything you need to develop your app.