This page provides details about enhancements in the 200.1 release of ArcGIS Maps SDK for Swift. It also lists deprecations, resolved issues, known issues, and more.
Enhancements
Real-time
Support for stream data
With this release, ArcGIS Maps SDKs for Native Apps introduces a new Dynamic Entities API. Use this API to connect to an ArcGIS Stream Service, bring data updates directly into your app, and process them in real time. Once established, a connection to a data stream is maintained and continues to deliver updates until it's closed. Objects created from a stream (known as dynamic entities) can be shown in a new layer, DynamicEntityLayer
, that is designed for real-time display. While no other work is required for consuming and displaying data from a stream, the API also exposes notifications that provide more fine-grained control. Handle these events to work directly with data coming from the stream, to get connection status changes, to track updates for a specific dynamic entity, and so on.
See the new Work with dynamic entities guide topic for more information.
Geometry
Feature tiling enhancements
Version 200.1 introduces a new feature tiling mode, Feature
. This provides an opt-in experience for developers to request high resolution geometries from a service. To opt-in, developers can set the feature tiling mode using the LoadSettings
property on the GeoModel
or on the individual layer.
This mode requires the service to support edit quantization mode (supports
), which returns all vertices of the source geometry in a high resolution. Use this mode for workflows that benefit from precise geometry editing, such as snapping feature geometries without loading the feature.
Scenes (3D)
Edge rendering
With this release, visualization of edges on 3D Object Scene Layers is available for iOS and Mac Catalyst apps built with ArcGIS Maps SDK for .NET or ArcGIS Maps SDK for Swift. Support for visualization of edges was first introduced in the Native Maps SDKs at version 200.0 but was only available for apps deployed to Android, Linux, macOS, and Windows operating systems.
Performance improvements
The performance of the scene view control when there is no user interaction has been improved by approximately 20 percent. This results in lower CPU consumption when the scene view is inactive and a corresponding reduction in battery usage for mobile devices.
The scene layer data loading pattern for desktop platforms has been optimized to prioritize loading content in the foreground while continuing to load coarser levels of detail (LoDs) in the background. This results in a significant reduction in the initial time it takes to render a scene layer.
Utility network
Expanded support for offline traces
This release includes expanded support for tracing while disconnected from a utility network service. Water and gas utility networks can now use the isolation trace type and subnetwork-based traces (subnetwork, upstream, and downstream traces) on hierarchical networks. Aggregated geometry results are also supported while tracing offline, providing a more efficient way to visualize trace results in a map view or scene view.
Nearest neighbor filter
When tracing while connected to a feature service, the results of a nearest neighbor filter can also be accessed, allowing an app to determine if all of the requested neighbors were found.
More trace configuration options
Three new trace configuration options are supported when tracing in either connected or disconnected environments:
-
UtilityTraceConfiguration.allowsIndeterminateFlow
-
UtilityTraceConfiguration.includesUpToFirstSpatialContainer
-
UtilityTraceConfiguration.validatesLocatability
Add trace conditions using categories
A new constructor for the Utility
class makes it even easier to add trace conditions using utility network categories.
Examine network rules
Version 200.1 supports querying and inspecting utility network rules using the new UtilityNetworkDefinition.rules()
method. Rules define what combinations of Utility
s and Utility
s can connect to, attach to, or contain other asset types and terminals, increasing the data integrity within the utility network.
Improved support for offline utility networks
The 200.1 release of the ArcGIS Maps SDKs for Native Apps now supports tracing of utility networks taken offline from an ArcGIS Enterprise 11.1 feature service when the recommended patches are installed to the Enterprise server. For more information, see the offline utility networks in ArcGIS Maps SDKs for Native Apps blog article.
Indoors
Floor awareness map support
According to the ArcGIS Indoors Information Model, floor-aware maps and scenes require a LEVEL
for floor information. With this release of ArcGIS Maps SDKs for Native Apps, an IndoorsLocationDataSource
outputs a LEVEL
value in addition to VERTICAL
, allowing developers to directly use the Indoor
output as an input to floor aware maps and scenes. To take advantage of this enhancement, the URL of the LEVEL table needs to be provided to the Indoors
, without which only VERTICAL
will be output.
See ArcGIS Indoors Information Model in the ArcGIS Pro documentation for more information.
Enhanced path snapping
The path snapping algorithm in the Indoor
is improved in this release. The snapped position is now more accurate and more consistent with less jumping between adjacent pathways.
Labels
Labeling properties manual
A new guide topic helps map authors understand how ArcGIS Pro labeling properties are translated into ArcGIS Maps SDKs for Native Apps labeling properties.
Line orientation property for label definitions
A LabelDefinition.lineOrientation
property has been added to allow users to modify the placement of line labels to the Left
or Right
of the digitized line feature, rather than Above
or Below
the line feature.
Breaking API changes
- API names and nullability have continued to be fine-tuned to follow Swift guidelines.
Map
andScene
no longer conform toObservable
. You can either store them asObject State
properties in your SwiftUI View, or as properties of aState
object that represents a model for the view.- The
GeoElement
protocol now requires that the attributes and geometry properties are gettable.Feature
,Graphic
, andKMLPlacemark
continue to allow the user to mutate both properties, but the other conforming types likeDynamicEntity
,DynamicEntityObservation
,ENCFeature
,RasterCell
, andWMSFeature
no longer allow the user to mutate either of the properties. Int32
,Int64
,U
, andInt32 U
types in the API have been replaced with a genericInt64 Int
where appropriate for a more convenient usage.SpatialReference
is now a struct.- Enums no longer conform to
Raw
protocol.Representable CalloutPlacement
is now a struct instead of a protocol.Any
is no longer needed and has been removed.Callout Placement ArcGIS
property has been moved toEnvironment.authentication Challenge Handler AuthenticationManager
and split into two separate properties:AuthenticationManager.arcGISAuthenticationChallengeHandler
andAuthenticationManager.networkAuthenticationChallengeHandler
.ArcGIS
property has been moved toEnvironment.credential Store AuthenticationManager
and renamed asAuthenticationManager.arcGISCredentialStore
.ArcGIS
property has been moved toEnvironment.network Credential Store AuthenticationManager
and renamed asAuthenticationManager.networkCredentialStore
.ArcGIS
has been moved toEnvironment.set Network Credential Store( _:) AuthenticationManager
as follows:ArcGIS
.Environment.authentication Manager.set Network Credential Store( _:) Network
andCredential Store.default ArcGIS
have been removed.Credential Store.default O
,Auth Configuration O
, andAuth Token Info O
have been renamed toAuth Credential OAuthUserConfiguration
,OAuthUserTokenInfo
, andOAuthUserCredential
respectively.Static
has been renamed toToken Credential PregeneratedTokenCredential
.- Static functions to create different types of credentials have been moved to respective classes from
ArcGISCredential
. - Custom error types have been created for the different error categories, for example,
Geocode
,Error Geodatabase
,Error Geotrigger
etc.Error ArcGIS
enum has been removed.Error Code - The
Hashable
andEquatable
conformances have been removed fromFeatureTable
andLayer
. A new wrapper type is now used in the dictionary in places whereFeature
andTable Layer
were keys. Item.id
is now optional andItem
no longer conforms toIdentifiable
.
Behavior changes
GeometryEngine.nearestCoordinate(in:to:)
does not support curve geometries. This method may produce incorrect results in previous releases when using geometry with true curves. This behavior is corrected in this release and the method now throws anArcGIS
if the geometry parameter contains true curves. This behavior matches otherRuntime Exception Geometry
methods that do not support true curves. Support for using true curves with this method may be added in a future release.Engine - Read-only feature layers now have feature tiling enabled by default when the service supports it.
- Navigating a route using the route tracker when working with ArcGIS location services is now available with a Lite License. It also requires that you set the API Key with an access token that has the
Routing
privilege,
- Integer values in
Feature.attributes
are now provided as Int16 or Int32 types depending on the field type in the geodatabase.
Deprecations
API deprecations
There are no API deprecations with this release.
OS and framework deprecations
- Support for macOS Big Sur 11 is deprecated. The last release to support macOS Big Sur 11 is version 200.1. A minimum of macOS Monterey 12 will be required at the next release.
Issues resolved
Issues addressed in this release are listed below.
- The 3rd-party Libtiff library has been upgraded to 4.5.0.
- BUG-000153386 Fixed an issue where
Subtype
s weren't honoring a map's reference scale.Feature Layer - BUG-000153429: Label fails to display correctly in a Union multipart feature.
- BUG-000154742: Landscape image service fails to load with parsing error.
- BUG-000154811: Feature link annotation with a vertical display of labels stored in a mobile geodatabase is showing inconsistent behavior in ArcGIS Maps SDK for .NET.
- BUG-000155484 Fixed an issue loading
Subtype
s when a feature service has label definitions.Feature Layer - ENH-000099317/ENH-000099318: WMTS layers with dimensional data are now supported. The default dimension value is used if provided by the service. Otherwise, the first value listed is used.
- Question on Esri Community Offline packages with non-ASCII characters in the path cannot be opened and read.
Known issues
Known issues or limitations for this release are listed below.
- A utility network that is configured with the "only include simple features" option cannot be loaded from an ahead-of-time offline map. To create a map with a loadable utility network use one of the other two offline utility network options.
Changes in samples
New samples
- Add dynamic entity layer
- Authenticate with OAuth
- Change camera controller
- Change map view background
- Change viewpoint
- Download preplanned map area
- Get elevation at point on surface
- Navigate route
- Query feature table
- Show device location history
- Show popup
- Show realistic light and shadows
- Sketch on map
- Trace utility network
Enhancements
- Modified code to use
@
property wrapper on view-model objects to store aState Object GeoModel
in anObservable
to ensure that the geo model is only created when necessary.Object - Updated UI in Project Geometry, Set basemap, Show callout, and Show result of spatial relationships.
- Updated APIs to reflect the breaking changes in 200.1.0.
- Added Swift package instructions.
Bug fixes
- Addressed compiler warnings for Swift bug and for Mac Catalyst compatibility.
- Fixed the
Offline
instantiation pattern to use a map instead of a portal item in Generate offline map.Map Task - Fixed various typos, formatting, and configurations.
Related topics
- System requirements for 200.1
- Install and set up
- Display a map (Tutorial)
- Product Life Cycle (Esri Support Site)