ArcGIS Blog

Developers

Developers

Migrating from ArcGIS Engine – Part 2: Developer Components

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

ArcGIS Engine will retire on March 1, 2026. If you use ArcGIS Engine to build custom GIS applications, and you are still planning your migration, this post is for you. The first post in the Migrating from ArcGIS Engine series reviewed the details of the deprecation and upcoming retirement of ArcGIS Engine (March 1, 2026), and introduced one of the primary migration paths with ArcGIS Maps SDKs for Native Apps (also known as the Native Maps SDKs).

ArcGIS Engine Developer Kit themes
ArcGIS Engine Developer Kit themes

The ArcGIS Engine Developer Kit was organized around five themes: extensions, developer components, map presentation, data access, and base services. In this post, we’ll explore the theme of developer components and review the components now available with the Native Maps SDKs, and in subsequent posts we’ll progress down the stack through Map Presentation and Data Access.

Developer Components

ArcGIS Engine included a collection of pre-built user interface (UI) controls, available only as Windows Forms controls for .NET or VisualBeans components for Java. Those controls included a MapControl for 2D display, a GlobeControl and SceneControl for 3D visualizations, as well as a PageLayoutControl, TOCControl (table of contents), ToolbarControl, SymbologyControl, and LicenseControl. Additionally, ArcGIS Engine included a set of finer-grained UI commands, tools, tool controls, toolsets, menus, and palettes for incorporating specific commonplace behavior into your UI, such as map navigation, feature selection, and editing.

The Native Maps SDKs include APIs and developer components that are designed to support the diverse range of modern device types, visual styles, and user experiences that organizations and developers aim to support today. These developer components support a wider range of languages, frameworks, and platforms and ensure that developers can work naturally in their chosen environment, while enjoying consistent mapping and location capabilities whichever Native Maps SDK they choose.

Native Maps SDKs

There are five Native Maps SDKs, each tailored to a different developer environment and developer experience, and targeting a specific set of devices and operating systems:

  • .NET Maps SDK: Build mobile and desktop apps with .NET MAUI, WinUI, or WPF. Delivered as NuGet packages, the SDK also includes Visual Studio project templates to help you get started.
  • Flutter Maps SDK: Create mobile apps for Android and iOS. The SDK is available as a pub.dev package for easy integration into your Flutter projects in VS Code.
  • Kotlin Maps SDK: Develop Android applications for phones and tablets using Kotlin. The SDK includes Gradle integration and composable views enabling you to get started quickly in Android Studio or IntelliJ IDEA.
  • Qt Maps SDK: Build desktop or mobile mapping apps with the Qt Framework using Qt Creator. The SDK provides a robust C++ API to support apps built with a Qt Quick or Qt Widgets user interface (UI).
  • Swift Maps SDK: Create mapping apps for Apple devices with a SwiftUI API and the latest Swift language features. Available as a Swift Package, the SDK easily integrates into your Xcode project using Swift Package Manager.

MapView

The map view component in the Native Maps SDKs is comparable to the ArcGIS Engine MapControl in providing a 2D map display and interaction. In an MVC architecture, the map view represents the View tier. The Model tier is represented by the Map object which contains layers of geographic data comprising a basemap layer and one or more operational data layers. In the next post in this series, we’ll cover map presentation which includes maps, basemaps, layers, styling, and more.

MapView UI Control
2D MapView control included with the Native Maps SDKs

User interaction

The map view enables users to explore the map by zooming, panning, or rotating with various interaction methods suitable for different devices, including mouse, keyboard, and touch. Formfactor-specific and familiar gestures, such as double-tap and drag, enable continuous zooming on Android and iOS. Additionally, users can obtain more information about map elements and highlight them through tap or click events, utilizing identify and select methods on the map view. In addition, map views support geometry editor components that enable users to add or modify geometries interactively within your application.

Location display

The map view features an advanced location display, often referred to as the “blue dot” experience. It defaults to using a system location data source class that provides updates using on-device capabilities but can also integrate with external NMEA sources for precise data. Additionally, the location display can work with indoor location sources or can be customized to work with proprietary location providers. The location display also does more than just show a blue dot; it enables geofencing through functionality referred to as geotriggers, supports turn-by-turn navigation with voice guidance and automatic rerouting, and allows for automatic floor switching in floor-aware maps as users move around a facility.

Swift Maps SDK location display
The location display shows device location on the map view.

Information display

Map views can display coordinate system grids, like Latitude and Longitude or Universal Transverse Mercator grids. They can also display additional information about features in a callout, including text and other content, which is connected to a specific location by a leader line. The map view supports the high-performance display of temporary data with in-memory graphics, managed as collections of graphics overlays. These graphics always appear above all other map layers and are used to show information such place search results or vehicle locations. Additionally, the map view supports image overlays, allowing for the efficient display of georeferenced images or image sequences, such as weather radar images, over other map content.

Editing geometry

The Native Maps SDKs support the creation and maintenance of spatial data with the Geometry Editor component, which works with the map view to deliver an interactive geometry-editing experience for both desktop and mobile users. Map views support one or more of these geometry editor instances, allowing for the capture of user interactions on the map view and enabling users to interactively add or modify existing geometries. The geometry editor offers a comprehensive selection methodology for vertices, edges, and multipart geometries, along with finer control over the editing experience. It includes commands for rotation and scaling, as well as a shape tool that simplifies the creation of predefined shapes such as ellipses, triangles, rectangles, and arrows, which can be represented as either polylines or polygons. For touch-based devices, a reticle-based editing experience is available for precision geometry editing, which is particularly valuable for mobile workflows, as fingertips or gloves may obscure parts of the device screen during data collection and editing.

Snap geometry edits
Use the Geometry Editor to edit geometries and align with existing features on the map.

Visual feedback is provided when adding vertices, displaying a real-time preview of the new vertex and its connected edges, facilitating more deliberate placement. Snapping to existing features during the interactive creation and editing of geometries is enhanced by visual cues that indicate when edits have successfully snapped to features. Dynamic snapping capabilities, known as geometry guides, assist in drawing 90° corners or parallel lines while editing vertices. Haptic feedback can further enhance the experience by vibrating the mobile device when a vertex snaps according to the established snapping rules.

Developer features

Several convenient developer features are also provided by the map view. It automatically displays attribution text for map layers, ensuring compliance with data usage terms. Draw status lets you and your users know when the map is rendering and when it’s complete. And layer view state events and properties provide the status of each map layer, indicating whether layers are visible or if there are any errors.

SceneView

The scene view component in the Native Maps SDKs is comparable to the ArcGIS Engine GlobeControl in displaying layers and data on a 3D globe in the World Geodetic System 1984 (WGS84) coordinate system. In an MVC architecture, the scene view represents the View tier, with the Model tier being represented by a Scene object which provides access to layers and more. It supports many of the same capabilities as the 2D map view: pan, zoom, identify, select, coordinate system grids, and image overlays.

SceneView UI Control
3D SceneView control included with the Native Maps SDKs

3D interactions and workflows

The scene view also supports some features that are specific to 3D interactions and workflows. It uses a camera to define the visible area and supports traditional actions like panning and zooming, along with 3D-specific actions such as tilting and rotating. Camera controller classes help create specific user experiences, enabling users to navigate freely around the scene or restrict interactions to a specific location or moving object.

The scene view allows users to see the horizon, sky, and space, and it provides properties to adjust its visual appearance. This includes settings for ambient light, atmospheric effects, space effects, sunlight, shadows, and the position of the sun.

The scene view features an analysis overlay collection, alongside graphics and image overlays, which shows results from interactive visual analysis tools for line of sight and viewshed operations. More details on the different types of analysis will be discussed in a future post in this series.

While the 3D scene view provides additional functionality beyond the 2D map view, there are also two capabilities that are currently not available in the scene view: the interactive geometry editor experience and location display.

Toolkits

Each Native Maps SDK includes an open-source Toolkit that features pre-built controls and components designed specifically for modern geospatial client app development. These can be utilized directly or customized to fit the needs of your app, streamlining the development process. Typically, you can integrate the Toolkit into your project by adding the package from the appropriate artifact repository, such as NuGet. Alternatively, you have the option to download the source code from the corresponding GitHub repository and build the Toolkit yourself by following the instructions provided in the repository.

Toolkit github repo
Open-source toolkits contain common controls and components.

Across the Toolkits, there exist a core set of components that are available in most of the SDKs. These include:

  • Authentication view: Displays a user interface that prompts for the appropriate user credentials when various types of authentication challenges are encountered while requesting secured services or content.
  • Basemap gallery: Shows a collection of items representing basemaps from ArcGIS Online, a Portal, or a developer-defined collection of basemaps. When a user selects a basemap from the Basemap gallery, the current basemap in the map or scene is removed and replaced with the selected basemap.
  • Bookmarks view: Displays a collection of viewpoints represented by bookmarks from either a web map or web scene or are defined in code. When the user selects a bookmark from the list, the viewpoint in the View is set to the extent of the bookmark.
  • Callout: Shows information at a geographic location on a map or scene. A callout can be shown to indicate the coordinates where a user tapped on the map, to provide information about a feature or graphic identified in the geo view, or to display a callout at the current user location.
  • Compass or north arrow: Displays a compass direction for a MapView or SceneView. Resets the view orientation when tapped or clicked and may automatically hide when the map is oriented to the north.
  • Feature form view: Allows users to edit field values of a feature using pre-configured smart feature forms, created with either the web-based Map Viewer or the Fields Maps Designer web app. The form definition, stored in the JSON metadata for the feature layer, specifies the UI for editing feature attributes. These smart forms streamline the feature attribute editing experience across the ArcGIS system with dynamic behavior that makes fields required, editable, and visible as the user updates values.
  • Floor filter: Enables users to select which floor of a facility they wish to view. Displays sites, facilities within sites, and floors within facilities, while enabling the toggling of visibility for levels on floor-aware maps and scenes. Integrates well with the indoor blue-dot experience of the map view location display.
  • Overview map: Defines a small, secondary MapView (sometimes called an “inset map”) displaying a representation of the current viewpoint of the given map or scene.
  • Popup view: Displays a popup to view field values for an individual feature in a layer. This includes showing the title, attributes, custom description, media (images and charts), and attachments for the feature.
  • Search view: Facilitates searching using one or more locators, with support for suggestions, automatic zooming, and custom search sources.
  • Scalebar or scaleline: Shows a representation of the accurate linear measurement that can be used to visually gauge distances on a map view.
  • Utility network trace: Enables a utility network trace experience for maps authored with a utility network and one or more trace configurations.

We aim for consistency across our SDK Toolkits; however, some variations may occur based on user requests and feedback. Certain SDKs contain components that are not yet available in all Toolkits, such as the offline map areas component for Swift, the legend for .NET and Kotlin, or coordinate conversion for Qt. Additionally, some functionality is integrated directly within the API rather than the Toolkit, like the authentication component in the .NET Maps SDK. If there is a specific component you would like to see added to the Toolkit for your chosen SDK, please let us know by opening an issue in the relevant repository for .NET, Kotlin, Qt, or Swift. A public GitHub repo for the Flutter Maps SDK Toolkit is coming soon.

Augmented Reality (AR) Toolkits

Transitioning to the Native Maps SDKs can unlock brand-new features, workflows, and user experiences not previously available with ArcGIS Engine. Through their support for modern mobile devices with built-in cameras plus access to sensors and location, the ArcGIS Maps SDKs for Kotlin and for Swift support augmented reality (AR) experiences.

Two primary AR patterns are supported:

  • World-scale AR, where scene content is rendered precisely in its corresponding location within the physical world as the user views the world through their mobile device display. It is applicable in various scenarios, including visualizing hidden infrastructure and displaying navigation waypoints. In world-scale AR, the real world serves as the context for your GIS data, rather than relying on a basemap.
  • Tabletop AR displays scene content that is anchored to a physical surface, resembling a 3D-printed model. This allows users to walk around the tabletop and observe the scene from various angles at an appropriate scale.
Tabletop and World-scale AR
Tabletop and World-scale AR Toolkit components for Kotlin & Swift

For more information on the AR Toolkits, see the Display scenes in augmented reality and Augmented Reality Documentation for Swift or the Display scenes in Augmented Reality documentation for Kotlin.

Calcite Design System

Esri has developed the Calcite Design System (Calcite) as a collection of design and development resources for creating beautiful, user-friendly, and cohesive experiences with minimal effort across applications. Initially designed for web applications, Calcite has gradually been adapted for native app development and is currently available for the .NET Maps SDK and Qt Maps SDK. These SDKs provide a set of XAML style resources or QML-compatible styles, enabling you to craft beautiful and consistent experiences that are either directly inspired by or utilize the Calcite web style for Esri, specifically tailored for the UI controls in your .NET and Qt desktop and mobile native applications.

.NET WinUI 3 app using Calcite styles, color resources, and icons.
.NET WinUI 3 app using Calcite styles, color resources, and icons.

For more information on using aspects of the Esri Calcite Design System in your native apps as you migrate from ArcGIS Engine, see the Esri Calcite Style in our Qt Maps SDK Toolkit or the Style resources for .NET XAML Frameworks (WPF, WinUI & .NET MAUI) inspired by the Calcite Design System, which was announced recently.

Equivalency

Some developer components that were previously available with ArcGIS Engine do not have a direct equivalent out-of-the-box.

  • SceneControl displayed an ArcScene document which supported scenes in projected coordinate systems, rather than global coordinate systems. Support for local scenes in projected coordinate systems with the Native Maps SDKs is on the roadmap for a future release.
  • PageLayoutControl displayed an ArcMap page layout, which was a collection of map elements organized on a virtual page, designed for map printing. Layouts typically included one or more map data frames, a scale bar, north arrow, map title, descriptive text, and a symbol legend. The process of digitalization, or digital transformation, has significantly reduced the map printing from custom desktop and mobile apps, and consequently there is no specific print layout control in the Native Maps SDKs.
  • SymbologyControl was used to display the contents of ArcMap or ArcGIS Server style files, and it enabled an end user to select an individual symbol that can be applied to the renderer for a layer, or the symbol for an element. While there is no equivalent symbology control in the Native Maps SDK Toolkits, the Toolkit for the .NET Maps SDK includes a more granular SymbolDisplay control and a sample demonstrating usage. Additionally, the GitHub Demos repo for the .NET Maps SDK includes a more advanced Symbol Editor Styling of layers and symbology itself will be discussed in a future post on map presentation.
  • LicenseControl initialized an application with the selected license or licenses enabling it to run successfully when deployed in production. Visible in a visual design environment but invisible at run time, the LicenseControl configured licenses at application start time when the form or dialog box containing the LicenseControl was loaded. It has no equivalent because the APIs included with the Native Maps SDKs provide simpler, more flexible, and more integrated options for licensing apps in production. ArcGIS Engine apps can be licensed with either an ArcGIS Desktop license or a specific ArcGIS Engine runtime license. Native Maps SDKs can be licensed with a dedicated license string, similar to ArcGIS Engine, but can also use an ArcGIS identity from ArcGIS Enterprise or ArcGIS Online to license use in production apps.

Summary

The Native Maps SDKs include APIs and developer components that are designed to support the diverse range of device types, visual styles, and user experiences that organizations and developers aim to support today. These modern developer components integrate seamlessly with the most popular development tools across various frameworks, ensuring that you can work naturally in your chosen dev environment, while enjoying consistent mapping and location capabilities wherever you are.

The table below provides a summary of each ArcGIS Engine control and the equivalent control or migration path provided by the Native Maps SDKs.

ArcGIS Engine control Equivalent Native Maps SDK control
Map Control Map View
Globe Control Scene View
Scene Control On the roadmap
Page Layout Control Not planned
Table Of Contents Control Toolkit and/or custom development
Toolbar Control Toolkit and/or custom development
Symbology Control Toolkit and/or custom development
License Control API

The ArcGIS Engine theme of developer components also included consideration of the Help system and Samples. Each of the Native Maps SDKs includes a comprehensive help system with guide topics, tutorials, API reference, Toolkit docs, samples, and more:

As you continue to plan your migration from ArcGIS Engine, if you identify functionality you currently use for which you cannot find the appropriate migration path, please contact your Esri account manager, or email ArcGISEngineDeprecation@esri.com to share details of your workflow including APIs, tools, operations, or data formats needed.

In the next post in Migrating from ArcGIS Engine series we will review map presentation. In the meantime, read how Esri partner Frox successfully migrated from ArcGIS Engine to our Native Maps SDKs and found multiple benefits.

Share this article

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