This page provides details about enhancements in the 200.3 release of ArcGIS Maps SDK for Swift. It also lists deprecations, resolved issues, known issues, and more.
Enhancements
Geometry editor
Enhanced feedback for vertex addition
The GeometryEditor
now displays additional feedback graphics when adding vertices using the VertexTool
. This is supported for input devices with a hover event (such as a mouse move without a mouse button press).
Basemaps
New basemap styles
The following basemap styles are new with this release:
- ArcGIS Human Geography
- ArcGIS Human Geography (Dark)
- Open Street Map Blueprint
- Open Street Map Hybrid
- Open Street Map Navigation
- Open Street Map Navigation (Dark)
Use the corresponding Basemap.Style
enum value to specify the basemap style when creating a Basemap
object.
Language support for basemap place labels
The new BasemapStyleParameters
class supports specifying a specific language to use for place name labels displayed on the basemap, or for defining a language strategy (such as using the local place names or the application's locale).
Feature reduction
Define clustering on point feature layers
The previous release introduced support for honoring clustering on point features in dynamic rendering mode when defined in a web map. With this release, you can define a new FeatureReduction
or update existing FeatureReduction
properties on point feature layers rendered in dynamic mode. This release also adds support for clustering on a FeatureCollectionLayer
.
Here are the key capabilities now available:
- Define rendering for clusters
- Define labels for clusters
- Configure popups on clusters
- Set a clustering radius
- Add aggregate or summary fields
- Define min/max sizes for cluster symbols
- Set a scale threshold for clustering
Here are a few known issues with clustering in this release:
- Cluster graphics cannot be selected or highlighted.
- Popup expressions that use the
$aggregated
variable are not evaluated.Features - Feature reduction is not exposed on the
FeatureCollectionTable
. As an alternative you can create and load aFeatureCollectionLayer
. Once loaded, you can access theFeatureLayer
and assign the appropriateFeatureReduction
properties.
Utility networks
Validate utility network topology
This SDK now supports validating network topology when using a utility network from a feature service. This is accomplished using the UtilityNetwork.validateNetworkTopology(Envelope)
method, which automatically updates the UtilityNetwork.dirtyAreaTable
. Like the ArcGIS Pro Validate Network Topology tool, this method cleans up dirty areas by updating the network index used by tracing to match any edited features. Check the UtilityNetworkCapabilities.supportsValidateNetworkTopology
property to determine if your connected utility networks support validation with this SDK.
Utility network state
This SDK now provides the ability to get the current state of the utility network by checking UtilityNetwork.state
for utility network version 4 and later. If UtilityNetworkCapabilities.supportsNetworkState
returns true
, you can call this method to determine whether network topology is enabled or if there are any dirty areas in your network that may impact trace results. To get more information about dirty areas in your utility network, you can query the dirty area table referenced through the UtilityNetwork.dirtyAreaTable
property. This property is available after the utility network has loaded. This table may also be added as a FeatureLayer
to display the dirty area features on the map. Submitting edits to a utility network feature service through calls to ServiceGeodatabase.applyEdits()
will automatically update this table with any new or updated dirty area features.
Feature editing
Check the ability to apply edits using a service geodatabase
When applying edits to a feature service, it is recommended to use ServiceGeodatabase.applyEdits()
to allow multiple tables to be edited in the same transaction and to allow additional edits made on the server to be reflected locally. However, some configurations of data do not support applying edits with a service geodatabase. For example, when some layers or tables in the feature service do not support global IDs.
With this release, you can check the ArcGISFeatureServiceInfo.canUseServiceGeodatabaseApplyEdits
property before calling ServiceGeodatabase.applyEdits()
. If this property is false
, you can fall back to using the ServiceFeatureTable.applyEdits()
method on the edited tables in the ServiceGeodatabase
.
Labeling
Label definition geometry strategy
With this release, a new LabelDefinition.geometryStrategy
property allows users to specify whether labeling of polygon or line features uses the original geometry (which may be off-screen) or the geometry clipped to the current viewing extent.
LabelDefinition.placement
still determines where to position the label with respect to the original or clipped geometry.
Indoor positioning
Improved Bluetooth (BLE) positioning
With this release, the indoors positioning algorithm has been strengthened against noisy and crowded environments. This results in an improved blue dot experience in environments that are densely populated with people or that contain many interfering radio signals.
Arcade
Support for Arcade 1.24
This SDK now supports Arcade 1.24. Enhancements include the following:
- Support for the new feature set function
Feature
Set By Relationship Class
Support for Arcade 1.25
This SDK now supports Arcade 1.25. Enhancements include the following:
- Support for the new
Filter
function.By Subtype Code
Projection engine updates
Enhancements
- New and updated EPSG definitions for coordinate systems and transformations through release 10.093.
- New geographic and projected coordinate systems for Algeria, Australia, Bosnia and Herzegovina, Canada, Chile, Colombia, older Danish systems, French territories, Germany, Illinois, Latvia, UK railways, and WGS 1984 BE UTM zones.
- New vertical transformations based on geoids, quasi-geoids, or other conversion grids can transform to or between gravity-related vertical coordinate systems for Austria, Canada, Denmark, Faroe Islands, French Antilles, Germany, Greenland, Iceland, Norway, Papua New Guinea, Poland, Slovenia, South Africa, Spain, and Sweden.
- New and updated geographic transformations for Algeria, Bosnia and Herzegovina, Canada, Colombia, Denmark, French territories, Hong Kong, Kyrgyzstan, UK railways, timed-fixed transformations between WGS 1984 realizations.
SDK enhancements
Authentication using smart cards
A personal identity verification (PIV) smart card can now be used for authentication when connecting to ArcGIS Enterprise. This requires iOS 16 and iPadOS 16.1, or later, which adds support for physical smart card authentication using an NFC or a CCID class-compliant reader. The Authenticator toolkit component has been enhanced to automatically use the identity available on an attached smart card when connecting to a PKI secured ArcGIS resource. You can also programmatically create a credential using Network
to use the identity on the smart card for authentication.
Augmented Reality
The Augmented Reality (AR) toolkit components allow quick and easy integration of AR into your application for a wide variety of scenarios. The toolkit provides the following common patterns for AR:
-
Flyover: Allows you to explore a scene using your device as a window into the virtual world. A typical flyover AR scenario will start with the scene’s virtual camera positioned over an area of interest. You can walk around and reorient the device to focus on specific content in the scene.
-
Tabletop: Scene content is anchored to a physical surface, as if it were a 3D-printed model.
The toolkit uses ARKit, Apple's augmented reality framework to display the live camera feed and handle real world tracking. Refer to the documentation for more information.
Job Manager
The Job Manager toolkit component allows long running jobs to execute in the background whenever the operating system permits. This is particularly useful if a user locks the device or switches to another app while a job is in progress. Examples of these types of jobs include taking a map offline or synchronizing edits with a service. The job manager also tracks and persists information about active jobs so that they can be easily recovered and resumed if an app is terminated and then relaunched.
Dynamic Entity enhancements
A number of enhancements have been made to automatically update UI components whenever their corresponding dynamic entity changes. For example, the callout updates its location on the map to track the dynamic entity as it moves, and the popup refreshes its content to display the latest information about the dynamic entity. A new convenience SwiftUI modifier evaluate
has also been added which allows you to automatically update any SwiftUI View based on an Arcade expression whenever a dynamic entity changes.
App Privacy improvements
The XCFramework files are now digitally signed to ensure software supply chain security. Also, privacy manifests have been added to help generate accurate App Privacy Nutrition labels. You can read more about these enhancements in Apple's announcement.
Localization
User facing messages and UI text has been localized into over 30 languages.
Breaking API changes
Geocode
,Error Geodatabase
,Error Geotrigger
,Error Licensing
,Error Mapping
,Error Network
, andAnalyst Error Symbol
types now include a detail message to help with troubleshooting.Dictionary Error
Behavior changes
There are no behavior changes with this release.
Deprecations
API deprecations
There are no API deprecations with this release.
OS and framework deprecations
There are no OS and framework deprecations with this release.
Issues resolved
Issues addressed in this release are listed below.
- BUG-000156793: Potential crash when multiple attribute rules execute simultaneously.
- BUG-000160506: Using
GeometryEditor
to transform a geometry that has a different spatial reference than that of the associated map view can appear to distort the geometry. - BUG-000161071: After implementing a rotation, application crashes intermittently when an offline map including a basemap and 10 operational feature layers with the refreshInterval property is loaded.
- BUG-000161183: Load failure for scene layers when spatial reference from WKT is used instead of WKID.
- BUG-000161523: "No Data" exception when opening mobile .geodatabase file after migrating data from Enterprise GDB 10.8.1 Oracle to Enterprise GDB 10.9.1 Postgres.
- Question on Esri Community: Change Elevation Source at runtime.
- A service fails to associate newly added features related by global ID when the
supports
isApply Edits With Global Ids false
. - Features created from a
Feature
cannot be added to a stand-alone mobile geodatabase.Subtype - Cannot delete certain features in utility network version 3 or older.
- The
Feature
evaluation fails when features lack values for relationship key fields.Set By Relationship Name
Known issues
Known issues or limitations for this release are listed below.
-
BUG-000149491: The WMTS layer does not show up in ArcGIS Field Maps (iOS/Android only)
-
BUG-000171844: Using scheduled updates with ArcGIS Maps SDK for Native Apps incorrectly downloads an entire new replica instead of incremental changes.
-
BUG-000171919: Creating an offline replica, with a full utility network, incorrectly requires that all layers from the feature service are included.
-
BUG-000171920: The
OfflineMapTask
can fail to create an offline replica when including a utility network.
- Layers coming from a map, scene, or basemap that has been disposed or is no longer in scope, might stop completing web requests resulting in timeouts and unresponsive layers.
Changes in samples
New samples
- Add clustering feature reduction to a point feature layer
- Add custom dynamic entity data source
- Animate 3D graphic
- Augment reality to fly over scene
- Augment reality to show tabletop scene
- Create mobile geodatabase
- Create symbol styles from web styles
- Display annotation
- Display dimensions
- Display scene from mobile scene package
- Display web scene from portal item
- Filter features in scene
- Find address with reverse geocode
- Find closest facility from point
- Find closest facility to multiple points
- Find route around barriers
- Find route in mobile map package
- Find route in transport network
- Geocode offline
- Group layers together
- Identify graphics
- Identify KML features
- Identify raster cell
- Play KML tour
- Render multilayer symbols
- Show device location with NMEA data sources
- Show mobile map package expiration date
- Style features with custom dictionary
- Style symbols from mobile style file
Enhancements
-
Improved callout for
Add dynamic entity layer
sample using the new Arcade expression evaluator modifier. The modifier automatically updates a SwiftUI View based on an Arcade expression whenever a dynamic entity changes. -
Improved various colors to make texts and controls more visible in both light and dark modes.
-
Adjusted appearance of information and source code panes.
-
Added status messages to various samples.
-
Enabled samples with on-demand resources to build on Mac Catalyst.
-
Refactored the error alert logic to omit cancellation errors.
-
Added a privacy manifest for the project.
Bug fixes
-
Fixed a scale mode issue in the
Create and edit geometries
sample. -
Fixed temporary directory creation on iOS 17 in response to Apple's file system change.
-
Removed unnecessary import statements in some samples.
-
Fixed a load status issue in
Trace utility network
sample. -
Corrected missing image URLs in README file.
-
Fixed a crash related to displaying a popup in the floating panel toolkit component.
Related topics
- System requirements for 200.3
- Install and set up
- Display a map (Tutorial)
- Product Life Cycle (Esri Support Site)