ArcGIS Blog

Announcements

Developers

What’s new in ArcGIS Maps SDKs for Native Apps 200.8

By Nick Furness and Rex Hansen, Mike Branscomb and Shimona Lahiri

The 200.8 release of the ArcGIS Maps SDKs for Native Apps adds support for PDFs as raster layers, identity-aware proxy authentication, APIs for customizing the geometry editor, significant updates to the Flutter SDK, and much more.

This release is also a long-term support release as we prepare for some exciting new capabilities we’ll be delivering next year (and if you use ArcGIS Maps SDK for Local Server, be sure to read the important note at the end of this blog post).

PDF raster layers

The PDF format allows for PDFs to include georeferencing information so they can be displayed as a map, or on a map alongside other geographic data. You might hear them referred to as geospatial PDFs, georeferenced PDFs, or GeoPDFs® (if created using tools from TerraGo). Geospatial PDFs can contain multiple layers of vector and raster data, alongside other context like legends, scale bars, map frames, etc.

These files can be viewed in commonly available PDF viewers, but more importantly also in GIS tools like ArcGIS Pro alongside other types of spatial data (ArcGIS Pro can also create them). As a standalone file they don’t need a network connection once they’re on a device and are often used by government agencies as a rapid data delivery mechanism for emergency response scenarios, but there are many other uses for them (e.g. displaying scans of historical paper maps alongside GIS data).

Two geospatial PDFs of the valley fire incident, overlaid in 3D over a topographic map.
Geospatial PDFs can be added to a map or scene just like any other raster layer

The 200.8 Native Maps SDKs introduce the ability to add a geospatial PDF to your map as a raster layer, which means you can view that PDF just as you might any raster alongside your other operational layers or basemap layers in 2D or 3D. As with any other layer, it can be switched on or off or given a transparency level, or be configured to only be visible between specific scales, and so on. A firefighter could add 3 PDFs to a map and switch between them to compare static snapshots of a fireline, for example.

Changing opacity of PDF raster layers
Developers can build specific controls for users to manipulated geospatial PDF layers.

Geospatial PDF support adds yet another tool to the arsenal of Native SDK capabilities which GIS data teams and developers can lean on to deliver targeted, focused GIS and mapping apps for critical, rapid response scenarios.

Programmatic reticle tool

Next, let’s switch focus to editing. The geometry editor has received significant updates in every release since its introduction. One of its tools, the reticle tool, is an intuitive way to precisely create and edit geometries on touch-based mobile devices, especially in challenging field conditions. The out-of-the-box experience works well for most users, but we’ve had a number of requests to support custom workflows.

This release adds a new programmatic reticle tool which developers can use to build highly customized editing experiences specific to their users’ workflows. For example, a user might navigate the map behind the reticle tool as usual, but instead of tapping the map to place a vertex, they can tap a toolbar button or speak a command. Or your app could automatically place a vertex whenever there’s a new GPS location update. Perhaps your user needs to type in a coordinate, in which case you can pan the map to that location and place a new vertex.

Example of a custom reticle UX
A custom UX showing the new programmatic reticle APIs in action

There are also new geometry editor events which you can use to dynamically update your UX as the user interacts with the geometry editor. Perhaps you want to highlight a button in your UX when the user hovers over a vertex, or update a status bar. These can be used with any geometry editor tool but are particularly useful with the new programmatic reticle tool.

Lastly, there is a new identify call on MapView that’s focused specifically on the geometry editor. You could use this to configure your app so a user could long-press to return information on which parts of the geometry they just tapped on, for example; did they tap on a vertex, or a specific part of a multipart geometry?

These new APIs go beyond simply programmatically modifying the geometry that’s being edited, enable greater control over the user experience you deliver. We’re excited to see the custom experiences you build with these new APIs.

Identity-aware proxy

An Identity-Aware Proxy (IAP) is a core component of a zero trust security model that enables organizations to enforce access control policies for apps and resources within a network, often leveraging centralized, external identity providers.

With IAP, a network and service each define specific authentication and authorization parameters for a user so that with each request, the service checks not only that the user is authorized to access the service, but also that their network authorization is valid.

This is a key component of zero trust environments and is in contrast to, say, a VPN where a user might authenticate to access an internal network, but services on that network don’t know anything about how the user got there and simply trust that the user is legitimately accessing that internal network.

Support for IAP authentication is available in the Native Maps SDKs for Swift and Kotlin, and will be made available in other SDKs in future releases. There are various IAP providers delivering solutions today, such as Microsoft Entra, Google, and F5.  This release targets Microsoft Entra.

3D in the Flutter SDK

When we added the ArcGIS Maps SDK for Flutter to the family of Native Maps SDKs, we still had a lot of capabilities to deliver, so we provided the Flutter Maps SDK’s parity page for you to know when you can expect to see specific features.

We’re making great strides in delivering those parity features and, perhaps appropriately for the 3rd production release of the Flutter SDK, we’re adding 3D support.

This includes a new Scene object, a corresponding SceneView UI component, and all the APIs you’ll already find in the other Native Maps SDKs, which allow you to consume and display 2D and 3D data in 3D, both online and offline. And the team has added many new samples showing how to use these new 3D APIs.

Three new 3D samples for the Flutter API, showing a web map with edge rendering, visual viewshed with a control panel, and an integrated mesh of Girona, Italy
Samples showing off the new 3D capabilities of the ArcGIS Maps SDK for Flutter at 200.8

Whether it’s elevation data, I3S layers (like integrated meshes, 3D object layers, point cloud layers, etc.), extruded or flat 2D feature layers, OGC 3D Tiles, or the many other layer types that the SDKs support, you can now display and interact with them all in your Flutter apps. And since that includes support for raster layers, you can even add geospatial PDFs to your scenes!

A sophisticated camera API provides control over how you view data in your scenes and how your user manipulates the view; users can have full control of the camera, or it can be locked onto a geographic location, or onto a feature like a car or plane (and even follow it as it moves).

Two samples showing how to use the different cameras in the ArcGIS Maps SDK for Flutter. The samples show a simple propellor plane model over the Grand Canyon.
Some of the new samples focusing on the camera APIs.

Interactive 3D visual analysis tools like viewshed and line of sight are also supported, as are offline files and packages like scene layer packages, mobile scene packages, KML files, etc.

AR capabilities are not yet included, and we’ll assess the level of interest and prioritize appropriately as we continue to work towards full parity.

Utility Network associations

The SDK toolkits now support navigating associations in both feature forms and popups. If you’re editing a utility network asset in a feature form, you can now drill down into its connected or contained elements, and can even edit those elements within the same editing workflow.

We’ll be delivering the ability to add, edit, and delete associations in a future update to the toolkits.

Other improvements

As always, there are a number of other enhancements we’re delivering in this release. You can read more about them in the release notes for each SDK.  Some of the highlights include:

  • KML performance has been dramatically improved when opening and working with KML containing large or complex line and polygon datasets.
  • You can now take indoors-aware web maps offline using on-demand and preplanned workflows.
  • New APIs allow you to specify resolution and tolerance for spatial references, which is particularly important when working with the geometry engine.
  • As the more capable Well-Known Text 2 language for specifying coordinate reference systems gains traction, the Native Maps SDKs now read and use WKT2 definitions by default where both WKT and WKT2 definitions are available.
  • Better support for curves in the geometry engine and when working with hosted feature services in ArcGIS Online.
  • Performance improvements when querying and identifying, especially with large feature datasets.
  • New Flutter SDK toolkit, including Authenticator, Compass, OverviewMap, and PopupView.
  • Kotlin toolkit:
    • New AR flyover, Overview map, and Offline map areas components
    • Improved AR world scale, Authenticator, and Basemap gallery components
  • .NET toolkit:
    • New File and Portal Item download helper
  • The Qt Maps SDK uses 200.x shared authentication logic (see this blog post for more details).
  • A new streamlined command-line installation experience for the Qt Maps SDK.
  • New JSON serialization APIs.
  • Support for Arcade 1.33.

And of course there is the regular swathe of performance improvements, bug fixes, and 3rd party library updates.

What’s next?

The Native Maps SDKs team aims to deliver a new major release every 3 years. A major release allows us to add significant new capabilities, and also to shed technical debt.

We’re excited to announce that we’re working hard to deliver the 300.0 release of the Native Maps SDKs in Q2 next year.

Before we look at what you can expect to see in 300.x, a note about what this means for 200.8.

200.8 long-term support

As part of our commitment to your development efforts, we designate the final point release prior to a major release as long-term support. So with 300.0 coming up fast, 200.8 is a long-term support release.

This means that you can expect two things:

  1. An extra year of general availability is added to the product lifecycle, extending it from 4 years to 5 years before 200.8 is retired in 2030:
    • 2 years of general availability
    • 1 year of extended support
    • 2 years of mature support
  2. During the general availability phase, we will proactively deliver 200.8.x patch releases. These will address bug fixes and third-party library security vulnerabilities that are identified during that time. This gives you a stable 200.8 release with extra time to migrate to the next major release should you need it, though we will encourage you to update to 300.x when available.

 

This follows the pattern we introduced when we transitioned from the 100.x SDKs to the 200.x SDKs. 100.15 received 6 proactive patch releases over two years, and this has proven to be a great balance between keeping up with vendor developer tools while responsibly supporting your development timelines.

Later this year, in the December timeframe, expect to see the first 200.8 patch release, 200.8.1.

[ Please note: since the ArcGIS Maps SDK for Flutter team is still working on achieving feature parity, the 200.8 release of the ArcGIS Maps SDK for Flutter is not an LTS release. ]

Upgrading to 300.x

The good news is that if you are already using the 200.x Maps SDKs, upgrading to 300.x will be simple.

300.x focuses on new capabilities and there are no major changes between 200.x and 300.x (like there were for some SDKs between 100.x and 200.x). You will only need to migrate a few deprecated APIs, which you’ll already see flagged as warnings in 200.8. Of course, if you’re still on 100.x, then moving to 300.x will be a similar effort as moving from 100.x to 200.x.

300.0 and beyond

There are some exciting capabilities we’re delivering with 300.x. We can’t talk about many of them yet, but here are three key themes we’ll be tackling:

  • 3D enhancements, including support for local scenes
  • Improved raster capabilities
  • New spatial analysis tools

There are some truly remarkable efforts under way which we can’t wait to show you. Watch this space for more details as we get closer to 300.0 next year.

Deprecation of ArcGIS Maps SDK for Local Server

As a reminder, ArcGIS Maps SDK for Local Server (also known as “Local Server”) was deprecated earlier this year and 200.8 is the last release. It is a long-term support release as described above, with retirement in 2030. If you have applications that use Local Server, it is time to start planning your migration to use core capabilities provided directly by ArcGIS Maps SDKs for Native Apps. For more information, please read our blog post announcing the deprecation of Local Server.

Download and get started

To get the latest version, update the reference to your Native Maps SDK of choice via NuGet, Gradle for Kotlin, the Swift Package Manager, or pub.dev for Flutter, or alternatively go to the Esri Developer website to download. If you are new to developing with the ArcGIS Maps SDKs for Native Apps, the SDKs for .NET, Flutter, Kotlin, Qt, and Swift have extensive guide documentation, API reference, tutorials, and samples.

Share this article

Subscribe
Notify of
0 Comments
Oldest
Newest
Inline Feedbacks
View all comments