The ArcGIS Maps SDKs team is pleased to bring you the first update to the 200.x series of Native Maps SDKs: 200.1.
This release sees some exciting new features that we’ve been working on for some time, as well as the new Swift and Kotlin SDKs graduating from beta to being production ready.
Real-time
One of the most requested features for the Native Maps SDKs has been access to real-time or streaming data services. Dynamic and rapidly updated data enables whole new classes of client applications like flight tracking, emergency response coordination, and monitoring weather conditions to name but a few.
We’ve been looking forward to delivering this support to you for some time now, and if you’ve watched the Developer Summit plenary or been to one of our recent conferences, you’ll have had a sneak peek at this. What we’re delivering is no ordinary stream layer.
We decided to support streaming data by reflecting the way real-world objects change across both space and time. Furthermore, because our SDKs have always been about more than merely displaying information, we also ensured that streamed data participates in user interactions and in answering questions in the context of the world around it, just like any other spatial data.
Dynamic Entities
The result is Dynamic Entities, a powerful new set of APIs and capabilities for working with streaming data.
A dynamic entity is more than just a single data point read from a stream. It represents a real-world object across a stretch of time, including current and historical observations, and the Native Maps SDKs can handle tens, even hundreds of thousands of these at once. Also, a dynamic entity isn’t just for tracking moving assets like a fleet of buses; it can represent a range of data streams like stationary sensors or point-in-time events.
Some key elements of the new dynamic entities capabilities are:
- Connecting to streams of data.
- Displaying streaming data with the new Dynamic Entity layer, in both 2D and 3D.
- Responding to data-driven events as data updates are streamed in.
- Performing and scaling well, on a range of devices.
At its simplest, you could get started by creating a Dynamic Entity Data Source and a Dynamic Entity Layer and adding that layer to your map or scene. The Dynamic Entity Layer connects to its data source and takes care of retrieving and displaying the current and historical Dynamic Entity Observations which make up the Dynamic Entity itself.
Just as with any feature service, you specify how the dynamic entity and its observations are displayed by defining renderers, and you can visually link a dynamic entity’s observations together with a track line. In addition to supporting renderers, Dynamic Entity Layer supports labeling, identify, selection, and callouts, and works in both 2D and 3D.
But you can do so much more. You can filter the data that is received from the streaming data source, and sophisticated purge rules allow you to control how much historical data is cached locally in your app at any one time.
Your app can respond to events to know when new observations arrive or are purged, or when new dynamic entities are detected, or when old dynamic entities have been fully purged. You can even listen to events on individual dynamic entities to focus on changes to particular real-world objects.
This first release of Dynamic Entities can connect to ArcGIS stream services (i.e., ArcGIS Velocity and ArcGIS GeoEvent Server streams). Future releases will add support for additional sources, including custom data feeds.
As you can see, there’s a lot of incredible functionality already, but these capabilities are just the beginning of what we have planned for dynamic entities.
For more information, see this excellent blog post, as well as the dynamic entity documentation for .NET, Swift, Java, and Qt (the Kotlin SDK will add dynamic entities in an upcoming release).
Utility Network
We also continue to build out capabilities around the utility network, adding new trace configuration options as well as support for offline isolation and subnetwork traces on hierarchical networks.
We continue to work on additional key offline utility network capabilities, which we will be rolling out over the next few releases.
Indoors
Indoor location now includes a level ID, a key requirement for integrating your indoor location with floor aware maps, allowing location, map, and floor picker components to seamlessly work together driven by the user’s location.
We’ve also improved the Indoor Location Data Source’s path snapping algorithms for a smoother, more accurate indoor location experience.
Edge Rendering
Edge rendering is a useful part of 3D visualization when dealing with untextured 3D Object Scene layers. Web scenes and web clients have supported this for some time, and we expand on the support added in 200.0 by adding edge rendering on iOS.
Geometry Editor
Geometry Editor was introduced with the 200.0 release of the Swift SDK. It is built from the ground up to be a successor to Sketch Editor and introduces a new vertex, edge, and multipart selection methodology along with finer-grained control over the editing experience. It paves the way for enhanced geometry editing capabilities that we have planned for future releases.
Geometry Editor is now available for use in the Swift, Kotlin, Java, and Qt SDKs (.NET will follow suit it in a future release). Please note that Sketch Editor will continue to be available for Java, Qt, and .NET SDKs for some time yet as we build out Geometry Editor functionality.
Other improvements:
- Access nearest neighbor filter results when tracing a connected utility network.
- Query and inspect utility network rules.
- A comprehensive labeling properties manual.
- Feature tiling improvements.
As is always the case, we’ve also been busy fixing bugs and making sure our 3rd party libraries are up to date.
Swift and Kotlin SDKs
In addition to all the new features and bug fixes, 200.1 marks the first production release of the new ArcGIS Maps SDK for Swift and ArcGIS Maps SDK for Kotlin. Released in beta at 200.0, these two SDKs now join the .NET, Java and Qt SDKs as fully supported production-ready SDKs.
We’ve taken the opportunity to listen to both external and internal feedback during the 200.0 beta and made several improvements to both the Swift and Kotlin SDKs, so they feel even more natural to use for Swift and Kotlin developers. If you’ve been using the beta SDKs, a list of these changes can be found in the release notes for each of the two SDKs. And if you haven’t because you’ve been waiting for the production releases, then now’s the time to jump on in!
The 200.1 release of the ArcGIS Maps SDKs for Native Apps continues to build on the great foundation of the 200.0 release. The entire team has worked hard to deliver production-ready SDKs for Swift and Kotlin development as well as introducing dynamic entities, enhancing the offline utility network capabilities, and so much more. For more details on what’s new with 200.1, check out the release notes for .NET, Java, Qt, Swift, and Kotlin.
Download and get started
To get your hands on the 200.1 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.
Article Discussion: