The Runtime team is excited to bring you version 100.12 of the ArcGIS Runtime SDKs. Update 12 delivers a brand new Geotriggers API, an API for working with true curves, and a host of improvements and refinements across the board. Let’s dive right in…
Geotriggers
Geotriggers provide a simple and powerful way to monitor your device’s location and alert you when your device enters or leaves a geographic area (sometimes referred to as geofencing). Geotriggers let you notify customers when deliveries are about to arrive, warn drivers when they have entered a restricted area, warn of impending weather alerts, and so much more.
To create a Geotrigger, you specify 3 components:
- A set of fences to monitor.
- A “feed” of location updates.
- A rule type (e.g. location enters or leaves a fence).
You then create a Geotrigger Monitor, sit back, and wait for events.
At this first release, the feed of location updates can be any Runtime location data source, allowing Geotriggers to act on a device’s current location, a NMEA peripheral, simulated playback of a GPX file, or even your own custom location data source.
Fences can come from a feature table (online or offline, optionally filtered using a where clause and/or an area of interest), a graphics overlay, or can be an individual feature or graphic.
There are a few really cool features included with Geotriggers that are worth knowing about:
- You can specify a buffer for the fences. This is required when the fences are points or polylines, but can also be used with polygons.
- If you’re using graphics for the fences (either as a single graphic or a graphics overlay), any updates to a graphic will automatically be taken into account by the Geotrigger monitor. This is great for monitoring your location relative to dynamically changing data (e.g. buffers around recent lightning strikes, or that taco truck that’s cruising around your neighborhood). And if you’re using a graphics overlay, Geotriggers will even notice when you add or remove graphics.
- You can specify an Arcade Expression for the message that is delivered when a Geotrigger event fires so you can read attributes from the triggering fence or feature and include them in the event message. This means you can really decouple the code listening to Geotrigger events from the data behind them.
- Because fences are just standard Runtime geometries, you automagically get support for multipart geometries.
- Geotriggers uses spatial indexing and various other optimizations to deliver great performance. This means we can comfortably support tens of thousands of geofences on a mobile device (although for the sake of your battery, it’s recommended you use as few geofences as your app actually needs to monitor).
- Although fences come from features or graphics, they don’t need to be part of a map or map view. Whether you display the fences is up to you.
Geotriggers provides a simple API, ties in to feature tables and graphics overlays (including automatically handling moving graphics), and provides performance benefits that would have been a heavy lift to code yourself. Even if you’ve already built a geofencing solution with Runtime, take a look at Geotriggers to see if that can help reduce your code maintenance.
This is only the first release of Geotriggers and lays the foundation for some exciting features we’ll be introducing down the line.
True curves
Runtime has always had some support for true curves, but it required densification of geometry and was limited to viewing only.
At 100.11 we introduced the ability to identify, query, and select features with true curves in feature layers, delivered in mobile map packages authored in ArcGIS Pro. We also improved support for true curves in the Geometry Engine.
Now, at 100.12, we’ve added APIs to create and edit geometries containing true curves. We’ve also added the ability to work with true curves in ArcGIS Enterprise feature services.
Runtime supports both Elliptic Arcs and Cubic Bezier curves. Geometry Builders can now add and edit curved segments. Note that Sketch Editors don’t yet support editing curves, but if you have built your own geometry editing experience using geometry builders, you can now integrate true curve editing.
True Curve Clients
To help maintain data integrity when editing true curves from ArcGIS Enterprise feature services, the API also includes a property declaring which level of support your Runtime app provides:
- Densify Curves: The app doesn’t need to work with true curves. Densified versions of true curve geometry segments will be returned. This is the default, and has been the behavior until now.
- Fetch Curves: The app will retrieve and display true curves, but doesn’t guarantee that it will work to maintain those curves if they are edited. This can reduce the network traffic when displaying true curve geometries.
- True Curve Client: The app will retrieve and display true curves AND has been updated to edit true curves.
The publisher of a feature service in ArcGIS Enterprise (10.6 or later) can specify that only “true curve clients” should be allowed to edit geometry containing true curves. If the service is configured this way, Runtime will require that an app declares itself as a true curves client before it can edit data from this service. Note: if your app declares itself to be a true curve client, it’s still up to you to ensure that any geometry editing code is updated to make use of the new true curve geometry builder APIs.
True curves from services are only supported in online workflows with ArcGIS Enterprise. We aim to improve true curve support in future releases, including offline workflows and sketch editor support.
Mobile geodatabases
100.12 introduces support for mobile geodatabases created in ArcGIS Pro (2.7 or later). These mobile geodatabases support both viewing and editing, and enable new offline editing workflows that don’t require a feature service. You can view mobile geodatabases with a Lite Runtime license, and editing requires a Basic license.
Unlike geodatabases generated and downloaded from a feature service, these don’t contain service item metadata. This means that, similar to working with GeoPackages or shapefiles, you configure symbology and popups when adding the data to a map.
Floor-aware maps
Floor-aware web maps are published by ArcGIS Pro 2.8 using the ArcGIS Indoor information model. Runtime 100.12 introduces support for working with these maps. If a map is floor-aware, you can control which floor is visible using the map’s floor manager. Future releases will bring support for 3D floor-aware scenes, and for packaging floor-aware maps in mobile map packages.
Locator deprecation
New locators were introduced with ArcGIS Pro 2.3 via the Create Locator tool and supported as of ArcGIS Runtime 100.5. These locators consist of a *.loc and *.loz file which are smaller, faster, easier to maintain, and offer consistency across the ArcGIS system. As previously mentioned, Runtime 100.11 was the last release to support classic geocode locators (which do not include a *.loz file) and they will not work with 100.12. Note: this only pertains to use of local locators – there is no change to Runtime support for ArcGIS geocode services.
Other enhancements
- Select and control visibility of individual annotation features in an annotation layer, as well as setting a definition expression on the layer.
- Utility networks honor association deletion “restrict” semantics.
- Client side labeling of point scene layers according to configured labeling info.
- Desktop support for Indexed 3D Scene Layer (I3S) versions 1.7 and 1.8, improving rendering, memory usage, and CPU usage, and reducing network requests on Linux, macOS, and Windows. Mobile support will come in a future Runtime release.
- Support for new Arcade 1.14 functionality, as well as 1.13 functionality to read domains and table schemas from a feature.
- Support for scale-based symbol classes and enhancements to Arcade-based military dictionary styles.
- Local Server is updated to support geoprocessing and map packages created with ArcGIS Pro 2.8.
For more details on all these new features and enhancements, see the release notes for Android, iOS, Qt, .NET, and Java.
Download and get started
To get 100.12, go to the ArcGIS Developers web site, browse to the ArcGIS Runtime SDK page of your choice and download the SDK. You can also reference the SDK through NuGet, Gradle, Swift Package Manager, or CocoaPods. If you’re new to developing with ArcGIS Runtime and don’t have an ArcGIS Developer subscription, simply sign up for a free account and you’ll be able to access everything you need to develop your app.
Article Discussion: