Skip to content

Toolkit

ArcGIS Maps SDK for Swift offers an open source toolkit that contains ready-made UI components to simplify the development of mapping and GIS apps in Swift. Check out the examples project to see these components in action or read through the documentation to learn more about them.

To use Toolkit in your project:

Toolkit Components

  • Authenticator - Displays a user interface when network and ArcGIS authentication challenges occur.
  • BasemapGallery - Displays a collection of basemaps.
  • Bookmarks - Shows bookmarks, from a map, scene, or a list.
  • Compass - Shows a compass direction when the map is rotated. Auto-hides when the map points north.
  • FeatureFormView - Enables users to edit field values of a feature using pre-configured forms.
  • Floating Panel - Allows display of view-related content in a "bottom sheet".
  • FloorFilter - Allows filtering of floor plan data in a geo view by a site, a building in the site, or a floor in the building.
  • FlyoverSceneView - Allows you to explore a scene using your device as a window into the virtual world.
  • JobManager - Manages saving and loading jobs so that they can continue to run if the app is backgrounded or even terminated by the system.
  • OfflineMapAreasView - Allows you to take a web map offline by downloading map areas.
  • OverviewMap - Displays the visible extent of a geo view in a small "inset" map.
  • PopupView - Displays details, media, and attachments of features and graphics.
  • Scalebar - Displays current scale reference.
  • SearchView - Displays a search experience for geo views.
  • TableTopSceneView - Allows you to anchor scene content to a physical surface, as if it were a 3D-printed model.
  • UtilityNetworkTrace - Runs traces on a web map published with a utility network and trace configurations.
  • WorldScaleSceneView - Allows you to integrate scene content with the real world.

Enhancements in 200.8

Authenticator

  • Adds support for Identity-Aware Proxies (IAP). An Identity-Aware Proxy (IAP) is a security feature that enables organizations to manage access to their on-premises web applications and services based on user identity. Typically, it functions as a reverse proxy, acting as a gatekeeper to ensure that only authenticated and authorized users can access specific resources. The authentication process for IAP occurs within a web session using protocols such as OAuth, SAML, or OpenID Connect. During this session, security tokens and cookies are generated, which remain valid throughout the session until they are invalidated. This release adds support for Microsoft Entra Application Proxy.
    • init(promptForUntrustedHosts:oAuthUserConfigurations:) is deprecated and replaced by init(promptForUntrustedHosts:oAuthUserConfigurations:iapConfigurations:) to support authenticating with IAP by optionally passing in configuration settings for the proxy.
  • Adds ArcGISAuthenticationChallengeType which allows the authenticator to better decide which type of ArcGISCredential should be created to handle the underlying authentication challenge.
  • oAuthUserConfigurations and iapConfigurations are now public read-write properties to allow setting configurations more easily.

FeatureFormView

Feature Form View
  • The FeatureForm view adds support for viewing utility network associations. Associations model relationships between utility assets in the real world based on connectivity, containment, or structural attachment.
  • The view allows users to browse through associated features and return to previously viewed ones. The associations are filtered according to the settings described by the form's UtilityAssociationsFormElement configuration. No associations are displayed if the form doesn't contain the required settings. If the view is used without a form definition, all available associations are displayed without any filters.
    • init(featureForm:) is deprecated and replaced by init(root:isPresented:).
    • FeatureFormView uses a NavigationStack internally to support browsing utility network associations. The new initializer provides an isolated navigation context for the feature form.
  • Browse utility network associations in a feature form through the UtilityAssociationsFormElement.
  • editingButtons(_:) is added to control the visibility of new built-in Save and Discard buttons.
  • navigationDisabled(_:) is added to prevent users from navigating to other associations.
  • onFeatureFormChanged(perform:) and onFormEditingEvent(perform:) are added to allow receiving change events from the form.
    • The feature form might change when navigating through the associations in a UtilityAssociationsFormElement.
    • You can run actions based on the form editing events, such as saving and discarding edits.

OfflineMapAreasView

  • Fixes a crash when attempting to re-download a deleted preplanned map area while offline.
  • Fixes a bug that stops the on-demand workflow from downloading an area. When the view first appears and the extent selector isn't moved, if the download button is tapped, the view behaved incorrectly.
  • Fixes a bug when using the view in certain offline situations, the view doesn't show the "No Internet Connection" message.
  • Changes the "Delete Map Area" button to "Remove Download" for ahead-of-time and "Delete Download" for on-demand workflows, to better reflect that the actions delete the downloaded data for the map area.

PopupView

Popup View
  • The PopupView adds support for viewing utility network associations. Associations model relationships between utility assets in the real world based on connectivity, containment, or structural attachment.
  • The view allows users to browse through associated features and return to those previously viewed. The associations are filtered (e.g., by assembly layer) according to the settings described by the form's UtilityAssociationsPopupElement configuration and presents results in collapsible groups by layer, table, or subtype. The view shows relevant association details - such as connected terminals or fraction along an edge - and supports navigation to the popup of an associated feature, whether spatial or non-spatial, with a back button to return to the previous view. It allows users to exit all associations at once, returning to the original feature, and only display associations that are currently available on the map.
    • init(popup:isPresented:) is deprecated and replaced by init(root:isPresented:) to better support navigating between associated features. PopupView uses a NavigationStack internally to support browsing utility network associations, and the new initializer provides an isolated navigation context for the popup view.
  • header(_:) modifier is deprecated. With the new navigation context, the view owns and manages its own navigation stack, so there's no longer support for hiding the header.
  • showCloseButton(_:) modifier is deprecated. With the new navigation context, the view decides whether or not to show the close button by the isPresented initializer parameter.
  • onPopupChanged(perform:) is added to support custom actions when browsing between popups associated via a UtilityAssociationsPopupElement.

For a complete history of enhancements, visit the toolkit Release

Resources

Instructions

Swift Package Manager

  1. Open your Xcode project. In the menu bar, select File > Add Package Dependencies...
  2. In the search bar, enter https://github.com/Esri/arcgis-maps-sdk-swift-toolkit as the package repository URL.
  3. Optionally, select an option for the Dependency Rule if you want to specify an exact version or a range of versions to use.
  4. Click Add Package.
  5. Add import ArcGIS and import ArcGISToolkit in your source code and start using the toolkit components.

New to Swift Package Manager? Visit swift.org/package-manager/.

Access ArcGIS location services

The toolkit examples app has been updated to make use of the ArcGIS basemaps defined with default basemap styles. These basemaps take advantage of geographically load-balanced ArcGIS location services and allow you to monitor usage with API keys or access tokens from user authentication. To use the toolkit examples app, you must implement API key authentication or user authentication. For more information, see How to use an API key or How to implement user authentication.

SwiftLint

Both the toolkit and examples app support SwiftLint. You can install SwiftLint from here. It is not necessary to have it installed in order to build, but you will get a warning without it. The specific rules the linter uses can be found in the swiftlint.yml files in the Toolkit and Examples directories.

Issues

Find a bug or want to request a new feature? Please let us know by submitting an issue.

Your browser is no longer supported. Please upgrade your browser for the best experience. See our browser deprecation post for more details.