This page provides details about enhancements in the 200.2 release of ArcGIS Maps SDK for Swift. It also lists deprecations, resolved issues, known issues, and more.
Enhancements
Scene layers
Filter features in 3D object and point scene layers
Scene layers of type 3D object or point scene layer now support filtering by features and by area. Support includes web scenes published containing scene layers with filtered features. Features can be filtered using one of the following new methods on the ArcGISSceneLayer
class:
-
setVisible()
- Sets the visibility of a single feature in the scene layer. -
setVisible<S>()
- Sets the visibility of multiple features in the scene layer. -
resetFeaturesVisible()
- Resets the visibility of all features in the scene layer.
Features in scene layers can also be filtered spatially using one or more polygon areas. A new class called SceneLayerPolygonFilter
defines a filter from a set of polygons and a spatial relationship. The spatial relationship determines whether to show only those features inside the filter area or those outside the specified area. The filter is applied to the ArcGISSceneLayer
via a new polygon
property.
Support for relative to ground surface placement mode
Scene layers of type 3D object scene layer or point scene layer now support features with a surface placement mode value of Relative
(relative to the ground surface). This enhancement adds initial support for a new collection of global 3D scene layers. With this release, the Living Atlas layer OpenStreetMap 3D Buildings (Beta) can now be used in your 3D scenes.
Edge rendering
This release completes support for displaying edges on 3D object scene layers across all Native Maps SDKs and on all platforms.
Real-time
Support for custom feeds
With this release of ArcGIS Maps SDKs for Native Apps, you can create a custom DynamicEntityDataSource
. This new API allows you to bring data from custom feeds that you manage into a DynamicEntityDataSource
as dynamic entities. You can visualize them in your application using a DynamicEntityLayer
. The API is flexible, allowing you to manage the connection and process data from any data feed required by your application. Use the custom DynamicEntityDataSource
to connect to a variety of feed types from streaming feeds over a socket to data files that are updated over time.
Specify fields when connecting to an ArcGIS stream service
This release includes the ability to specify a subset of fields from an ArcGIS stream service using ArcGISStreamServiceFilter.outFields
.
Support for camera controller, viewshed, and line of sight on a dynamic entity observation
In addition to a DynamicEntity
, you can now use a DynamicEntityObservation
as the input to a GeoElementViewshed
, GeoElementLineOfSight
, and OrbitGeoElementCameraController
.
Performance improvements
Several performance improvements have been made to dynamic entities in this release. DynamicEntityObservation
attribute information is now compressed down to 25% of previous sizes, and observational parsing has been increased by up to a factor of four, allowing for higher throughput.
Visualization
Support for clustering of point features
With this release, ArcGIS Maps SDKs for Native Apps adds support for feature clustering. Point features in a feature layer can be clustered in a map when displayed using dynamic rendering mode.
Feature clustering dynamically aggregates groups of points that are within proximity of each other so they can be represented with a single symbol. The size of the symbol indicates the relative number of points it represents. Clusters are updated as the map scale and extent changes, allowing you to see patterns in the data that may otherwise be difficult to visualize with a large number of overlapping points. You can use ArcGIS Pro or ArcGIS Online to author and publish point feature layers enabled with clustering.
Adding a cluster-enabled feature layer to your Native Maps SDKs app, or opening a web map that contains one, will render clusters if the layer's rendering mode is dynamic. If the rendering mode is set to static, individual features in the layer are drawn using the layer's renderer.
Here are some details about working with clustering in ArcGIS Maps SDKs for Native Apps:
-
A layer's renderer is separate from its cluster renderer. If a cluster renderer was not defined when authoring the data, the layer's renderer is used to infer cluster symbology.
-
If the rendering mode is set to static, individual features are drawn using the layer's renderer. This is the same appearance the layer would have if clustering was not enabled.
-
Point features that are not included in a cluster are drawn as individual features using the layer's renderer.
-
Clusters are dynamically updated as the map's scale and extent changes.
-
Identifying a clustered geoelement returns an
AggregateGeoElement
. The geometry of an aggregate geoelement is the centroid of the cluster graphic and its attributes are the summary fields defined at the time of authoring or publishing the layer. -
Pop-ups on clusters are separate from the pop-ups defined on a feature layer. When you identify an aggregated geoelement, you can get access to pop-ups defined on the clusters.
-
You can toggle the visibility of clusters. When clusters visibility is turned off, the individual features are drawn.
-
Clustering does not apply to layers with polyline and polygon geometries and is not supported in 3D.
Here are a few known issues with clustering in this release:
-
Clusters do not display labels.
-
Cluster graphics cannot be selected or highlighted.
-
Pop-up expressions that use the
$aggregated
variable are not evaluated.Feature -
If the authored cluster symbology contains size visual variables on a summary field other than
cluster
, the cluster symbols do not display with the correct sizes._count
Geometry
Programmatically move, rotate, and scale geometry
The GeometryEngine
class introduces new static methods to move, rotate, or scale geometries.
Interactively rotate and scale geometry
The GeometryEditor
now displays control graphics when appropriate geometry editor elements are selected. These graphics allow the user to interactively rotate and apply uniform or free-stretch scaling to the selected elements.
Create predefined shapes
The new ShapeTool
, for use with the GeometryEditor
, allows you to create a predefined shape, such as ellipse, triangle, rectangle, and arrow. These shapes can be represented using polyline or polygon geometry.
Utility network
Utility Network offline tracing enhancements
Offline tracing support was added to the Native SDKs 200.1 release and has been improved in 200.2 with additional bug fixes and tracing support.
- The ArcGIS Maps SDKs for Native Apps now support tracing of utility networks taken offline from an ArcGIS Enterprise 11.1 feature service.
- Offline traces now support nearest neighbor trace results and loops tracing.
- Offline traces have an improved performance when tracing with propagators. These new tracing enhancements are available for all mobile geodatabase types.
SubtypeSublayer feature templates
Custom feature templates can be configured for each FeatureSubtype
in a Subtype Group Layer using ArcGIS Pro, and the Native Maps SDKs now provide these templates via the SubtypeSublayer.featureTemplates
property.
Arcade
Support for Arcade 1.23
ArcGIS Maps SDKs for Native Apps now support Arcade V1.23. Enhancements include the following:
-
Support for new geometry functions NearestCoordinate and NearestVertex.
-
Updates to Feature and Dictionary functions. These functions now accept more types, easing conversions between features, dictionaries, and geometries.
-
Reduction of preparation time by half when a script is evaluated. This reduction is most significant in multiple evaluations of a small script, for instance a script calculating a value from a few feature attributes.
The newly added GetEnvironment function has limited support: locale and application values always return empty strings.
SDK Enhancements
Enhancements for map and scene interaction
- Navigating the map in 2D and scene in 3D is now supported with keyboard shortcuts on iPadOS and Mac Catalyst.
- New events have been added to MapView and SceneView that indicate whether the user is interactively panning, zooming, or rotating the map or scene. See onInteractiveZoomingChanged(perform:), onInteractivePanningChanged(perform:), onInteractiveRotatingChanged(perform:).
- New events have been added to MapView and SceneView to indicate whether the user is performing a drag gesture. Developers can customize the handling of this gesture, for example, to interactively move a graphic instead of panning the map. See onDragGesture(shouldBegin:onChanged:onEnded:onCancelled:).
- A magnifier is displayed on the map in response to a long-press gesture.
OAuth Application Credential
OAuth Application Credential is now supported. OAuth Application Credential uses the registered application's credentials to access secured services on ArcGIS. It manages ArcGIS authentication and grants a short-lived access token generated via OAuth 2.0 using the application's client ID and client secret outside of the context of a user.
Support for iOS 17
Shortly after iOS 17 was announced during Apple's WWDC conference in June 2023, testing began on the developer and public betas to ensure apps built with ArcGIS Maps SDK for Swift could adopt it quickly. Following the official release of iOS 17 on September 18, 2023, ArcGIS Maps SDK for Swift version 200.2 was certified to support iOS 17.
Breaking API changes
Popup
has been marked optional to reflect that it is initialized only after theAttachment.file URL Popup
has been loaded.Attachment Dynamic
has been marked non-throwing.Entity Data Source.disconnect()
- Projection Engine compatibility: The internal directory structure of the Projection Engine data files has changed. The new file structure within the Projection Engine data files version 200.2 is supported with ArcGIS Maps SDKs for Native Apps version 200.1 or later. If your application deployment includes the Projection Engine data files, you may need to update your build or setup process to reflect this change.
Behavior changes
Geometry
now supports curves.Editor.symmetric Difference - Projection engine (PE) data for geographic transformations are arranged in a different file structure than previous releases. This change is designed to accommodate the increasing number, complexity, and size of the data files. See the readme in the projection engine data download for more information.
LabelDefinition.whereClause
sql can now includeN
for literal unicode text.
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-000148628: After tilting scene towards the zenith, it is not possible to tilt it back towards the earth's surface.
-
BUG-000149324 Fixed an issue where pop-ups did not load when certain fields are hidden before publishing.
-
BUG-000152125: Changing the visibility of
GroupLayer
layers for map image layers does not trigger the layer viewer state change handler on aMapView
object. -
BUG-000155877: The nested feature group layer stored in a mobile map package (.mmpk) shows inconsistent visibility when the group feature layer's toggle button in the layer list is switched on or off.
-
BUG-000157495: Fixed an issue where new attachments may not be submitted for features to a feature service layer when the service contains a second layer without a global ID field.
-
BUG-000158130: Fixed the value reported by the
scale
property ofSymbols SubtypeFeatureLayer
. -
BUG-000158132: Fixed an issue where cloning a
SubtypeFeatureLayer
did not retain thescale
properties of sublayers.Symbols -
BUG-000155955: The second raster image from a mosaic dataset disappears while interacting with the MapView.
-
The 3rd-party Libtiff library has been upgraded to 4.5.1.
-
Fixed a bug where an utility network that is configured with the "only include simple features" option could not be loaded from an ahead-of-time offline map.
-
Fixed a bug that did not preserve the rendering or pop-up configuration for a
SubtypeFeatureLayer
when taken offline in some scenarios. -
Improved performance and decreased memory usage when reading mobile map packages, webmaps, and webscenes.
-
Fixed a bug that cleared attributes of a child feature in a simple relationship when its parent feature was deleted.
Known issues
Known issues or limitations for this release are listed below.
-
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. A workaround for this bug is to first project the geometry to the spatial reference of the map view and then pass it to theGeometryEditor
. -
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.
Changes in samples
New samples
- Add WMS layer
- Analyze network with subnetwork trace
- Animate images with image overlay
- Apply unique value renderer
- Create and save KML file
- Create buffers around points
- Create convex hull around geometries
- Create convex hull around points
- Create load report
- Densify and generalize geometry
- Display content of utility network container
- Display map from portal item
- Display points using clustering feature reduction
- Find nearest vertex
- Identify layer features
- Manage operational layers
- Measure distance in scene
- Monitor changes to map load status
- Run valve isolation trace
- Set max extent
- Set min and max scale
- Set up location-driven geotriggers
- Set visibility of subtype sublayer
- Show coordinates in multiple formats
- Show extruded features
- Show labels on layer
- Show line of sight between points
- Show utility associations
- Show viewshed from geoelement in scene
- Style point with picture marker symbols
Enhancements
- Optimized Mac Catalyst Interface for Mac.
- Refactored and renamed Sketch on map to Create and edit geometries sample using the new sketching tools and aspect ratio lock option.
- Improved home screen design and searching experience.
Bug fixes
- Changed the on-demand resource's state to
.downloaded
when the download completes to prevent multiple downloads. - Fixed an on-demand resource related crash in iPadOS sidebar navigation logic.
- Fixed an issue to present the detail component correctly with sidebar navigation on iOS 16.
- Fixed sample metadata decoding script that worked incorrectly with empty directory.
Related topics
- System requirements for 200.2
- Install and set up
- Display a map (Tutorial)
- Product Life Cycle (Esri Support Site)