This page provides details about enhancements in the 100.1 and 100.1.1 releases of ArcGIS Runtime SDK for iOS. It also lists this release's known issues.
What's new
For 100.1.1
Version 100.1.1 adds support for iOS 11 and Xcode 9 by resolving a warning where some UIKit APIs were called on a background thread. Additionally, it contains some bug fixes to improve identifying map image layers and filtering data of feature layers using definition expressions.
For 100.1
3D support on mobile devices commercially available
In the previous release, developers could deploy 3D apps to mobile phones and tablets only as BETA; 3D was commercially supported only on desktop platforms. Now at 100.1, 3D capabilities are fully supported on mobile phones and tablets.
Raster support on mobile devices commercially available
In the previous release, apps that used local raster data on mobile phones and tablets could only be deployed as BETA; Raster was commercially supported only on desktop platforms. At 100.1, local raster capabilities are fully supported on mobile phones and tablets.
Take a map offline
Web maps or specific areas of a web map from a portal can be downloaded and used in disconnected scenarios. The new Offline
provides a high-level API to download the map definition and its related data. When the map is taken offline, it is stored as a mobile map. If the map contains sync-enabled feature layers, those can be edited offline and the changes synced when network connectivity is later available.
For details, see Offline maps, scenes, and data.
Client-side labeling control
A new AGS
class is introduced that defines how labeling is applied to feature data for a given scale range. You can specify the following:
- Which features are covered by the definition (by applying the label definition's where-clause)
- What text should be displayed, based on the individual feature's attributes and the label definition label-expression formula. Arcade expressions are supported in label definitions and visual variables but not in unique value renderers or class breaks renderers.
- How the text should appear, using the definition's text symbol
- Where the text should appear with respect to its feature, using the definition's label placement
- How to move or avoid other labels or features that would overlap each label
At this release, you can only construct an AGS
instance from JSON but there is no explicit API for specifying labeling settings.
Support for additional layer types
This release adds support for the following data layer types.
- OGC WMTS
- Image Service
- Dynamic sublayers of an ArcGIS Map Service
- OpenStreetMap
- Bing
Extensible tile layers
This release provides APIs to display custom tiles. The AGS
is an extensible layer that requests map tiles from a web service based on a URI template. It provides a simple way to integrate non-ArcGIS Services as a layer in a map. Also, custom tiled layers can be created by sub-classing AGS
and its subclass, AGS
. These two abstract classes expose protected abstract methods to either fetch tile images or return the URL of the tile images. By extending these two classes and implementing the abstract methods, you can create custom tiled layers and add them to a map.
Related tables
This release provides APIs for supporting related tables. With this, apps can handle workflows that involve reading, editing, and querying related data in both spatial and non-spatial tables. These related table workflows are supported in both online and offline maps.
Display heat maps
A new AGS
class uses the points in a layer to calculate and display the relative density of points on a map. The density is displayed as a heat map by smoothly varying sets of colors ranging from cool (low density of points) to hot (high density of points). At this release, this class is constructed only from JSON when it's defined in a web map and no explicit API is provided for working with it.
Editing of public feature services available at the Lite license level
The ability to perform edits in a connected environment on a public feature services from ArcGIS Online or Enterprise at the Lite license level has been introduced this release. At version 100.0.0, all editing capabilities began at the Basic level. The editing of private feature services or editing in an offline environment remains at the Basic, Standard, and Advanced licensing levels.
Service area and closest facility analysis
Closest facility and service area tasks are now available for performing more network analysis in your ArcGIS Runtime applications.
A service area is a region that encompasses all streets that can be accessed within a given distance or travel time from one or more facilities. For example, a three-minute, drive-time polygon around a grocery store can determine which residents are able to reach the store within three minutes and are thus more likely to shop there.
The closest facility task generates routes between facilities and incidents. Routes may include a route shape and driving directions. The task may generate routes from facilities to incidents or from incidents to facilities and can find a user specified number of routes, for example finding the three closest fire stations for an address.
Coordinate formatting
The AGS
class can be used to convert between points and formatted coordinates notation strings such as decimal degrees; degrees, minutes, and seconds; U.S. National Grid (USNG); and Military Grid Reference System (MGRS).
Follow a graphic in 3D
Camera controllers allow you to change the default camera behavior in a scene view. Two "orbit" camera controllers were added to lock the focus of a camera to a fixed point target or a possibly moving graphic.
Support for StreetMap Premium packages
StreetMap Premium for ArcGIS Runtime is a new data product, licensed as an extension to ArcGIS Runtime, that provides enriched street data, which powers a high-quality cartographic map and high-quality search, geocoding, and route analysis. Streetmap Premium for ArcGIS Runtime maps are consistent across all regions of the world and can be taken offline for disconnected use; they can simultaneously fulfill the need for an address locator, street network dataset, and basemap in your app.
StreetMap Premium for ArcGIS Runtime delivers HERE data as a mobile map package (an .mmpk
file) for your app to access locally. This MMPK format allows the data to be accessed offline and therefore doesn't consume data from your user's data plan. This is the same high-quality data used by ArcGIS Online services, including the World Geocoding Service, Routing Service, and Street Map Service.
GeoView attribution
AGS
and AGS
have been enhanced to automatically display attribution for map and scene layers respectively. The attribution is dynamic and updates as layers are added/removed, toggled on/off, or change visibility as they go in and out of scale range.
Open-source toolkit components
New at this release are open-source toolkit components that provide high-level functionality and can be easily integrated into your iOS apps to simply app development with Runtime. Examples include a scalebar, legend, measure toolbar and more will continue to be added in the coming months. For more information, check out the GitHub repo: https://github.com/Esri/arcgis-runtime-toolkit-ios
Migrating your existing apps from version 100.0
API Changes
None
Xcode Project Changes
None
Known issues
In 100.1
Maps, layers, and general
AGS
gives incorrect coordinates in wrap around mode.Map View.location To Screen - Map view grid lines that lie close to the 180th meridian or poles may not always display correctly.
- AutoPanMode and InitialZoomScale are ignored if set before starting location display.
- Querying
AGS
does not complete if the table failed to load.Feature Table - Cloning an unloaded map prevents it from rendering in a map view. Load the map before cloning it.
- Text in vector tiled layers may not display at certain scales.
- Vector tiled layers created from a URL don't have attribution.
- Once a vector tile layer is cloned, there is no way to handle requests for it.
- Related tables: When an origin feature is deleted, the key field of the related feature is not set to null for hosted services that have a non-unique primary key.
- Web maps saved from an ArcGIS Runtime app containing Bing Maps layers may not be compatible with older versions of the Web Viewer.
- ArcGIS Online currently does not support requesting features from feature services in a different spatial reference using the latest WKID value stored in a map.
- SpatialReference.equals() may return false when comparing Web Mercator spatial references.
- When exporting a tile package from a service that is hosted in ArcGIS Online (tiles.arcgis.com) with a geometry that is not in the same spatial reference as the service, the tile package will be corrupted and will not display correctly.
AGS
does not support legends.ArcGIS Scene Layer AGS
fails for a layer that has not finished rendering.Geo View.get Layer View State - Using
AGS
, you cannot digitize a polyline across the dateline.Sketch Editor - Memory is not freed when graphics symbolized with picture marker symbols are cleared from a graphics overlay.
- A Bing Maps layer created with a Portal needs to load the Portal first.
- Definition expressions using time fields on spatial service feature tables will result in no features being displayed.
- Cannot change definition expression after setting invalid definition expression on feature layer in a SceneView.
- Feature layers with indexes on GlobalID fields may cause an app to crash.
- Loading feature layers that have fill symbols with an outline with of less than 0 will return an exception.
- Diagonal fill symbols render in opposite directions between JavaScript and Runtime.
- Map view recenters instead of zooming to the desired scale when EaseInQuart, EaseInOutQuart, EaseInQuint or EaseInOutQuint viewpoint animation curves are used.
- Moving map view to a screen with a different DPI changes the size of the map content.
- Symbol sizes for graphics in static mode differ in size between 2D and 3D views.
- Vector tile symbols don't always scale consistently with DPI.
- Map view doesn't zoom to geometry if the supplied geometry's envelope has zero height or width.
- Setting minimum scale on a graphics overlay in a scene view is not accurate.
- Calling the clone method on a loaded feature layer throws
bad
exception._weak _ptr - Gradient fills used in mobile map package are not displayed correctly in apps.
- Invalid base layer, reference layer, or operational layer will not raise
Layer
under certain scenarios.View State Changed Event - In some cases, a feature layer can have a load status of
Loaded
butget
still returns null.Renderer - Service feature table contents do not re-populate after clearing cache.
- Service feature table can fail to load from a service with "Invalid JSON" error when the real problem is the JSON from the service contains an unsupported image format.
- There's an inconsistency in handling null values in JsonSerializable UnknownJson.
- Popup title does not use name when the title is defined with a coded value domain field.
- Popup.GeoElement.Attributes uses label/alias values instead of field names as keys for the attribute dictionary when used with ArcGIS map services.
- Field name in popup definition for Arcade expression does not include the title for the expression field.
AGS
returns null for features from a map service.Popup.get Symbol - A geodatabase is taken out of scope even if its feature tables are in scope. This is because the geodatabase holds on to strong references to its tables, but the tables do not have a strong reference back to the geodatabase (as this would lead to a circular reference). This is by design.
- Editing overrides for a feature layer in a web map are not honored.
- Synchronizing large geodatabases with many features and no local edits may take longer than expected.
- Offline features disappear intermittently during map interaction when syncing large geodatabase.
- When registering a mobile geodatabase with a new user (different from user who created the mobile geodatabase), local edits still apply the user who created the geodatabase when editor tracking is enabled.
- On iOS, geodatabase files that contain large numbers of features may delay layer loading and other operations.
- When using local street address locators, suggestion results without a house number can't be used to retrieve results.
- Locator performance may be poor for larger local locator datasets.
- Saving map with ForceSave false and feature collection layers by reference throws exception. Workaround: ForceSave the map and while loading the saved map set the visibility of FeatureLayer referenced by FeatureCollectionTable to true.
- Functions are not supported in where clauses for labeling.
- GeoprocessingJob.ToJson throws exception when it contains input parameter type of GeoprocessingFeatures with null features.
- GeoprocessingJob.FromJson does not populate GeoprocessingFeatures.URL.
Raster
- Adding rasters to
AGS
with some invalid parameters can fail without notifying the user.Mosaic Dataset Raster - Some 3D renderers on some platforms may not work correctly on
AGS
.Mosaic Raster Dataset - In some cases, the default rendering applied to raster data may appear different from how it appears in ArcGIS Online.
- The
Load
event doesn't fire when using aStatus Changed AGS
instance to create a mosaic dataset and binding it to aMosaic Dataset Raster AGS
for rendering.Raster Layer - When adding rasters to a mosaic dataset that is already being used for a raster layer, the new content will not show up in that existing layer.
- Raster layers report
Layer
("Layer does not have SpatialReference") while loading. The layer will then transition toView State. Error Layer
after self-correcting and loading the layer.View State. Active - Some raster layer operations may crash on iOS or macOS due to too many open file handles.
AGS
doesn't free a used raster before the application is shut down.Raster Layer - When interacting with the MapView, attempting to pan the view all the way north will cause the MapView to spring back to the bottom of the screen.
Image services
- When an
AGS
is created with a URL,Image Service Raster get
should return null but instead it returns the URL.Path - Setting a color map raster function as rendering rule on an image service has no effect.
- ImageServiceRaster based on MODIS image service may only partially render when using HTTPS.
- Visual artifacts can appear on a map when the default rendering rule of an image service has dynamic range adjustment (DRA) enabled.
- Setting a rendering rule on
AGS
after loading has no effect.Image Service Raster - App may crash when exporting tile cache from image service that does not support it.
Symbols, renderers, and graphics
AGS
doesn't honor the screen alignment property for feature layers.Text Symbol - Kerning does not work with simple Latin scripts, causing a performance problem with military symbol text.
AGS
width, height, and image properties are not working correctly on scene view.Picture Fill Symbol - When kerning is enabled on a statically-rendered
AGS
, it will appear misaligned and may render beyond the extent of its background.Text Symbol - In a scene view, changing
AGS
font weight or style does not affect the symbol as expected. The glyph spacing changes, but the glyphs themselves remain the same.Text Symbol - In a scene view, changing
AGS
halo color or size has no effect when symbolizing elements displayed in dynamic mode.Text Symbol - In a graphics overlay displayed using dynamic mode in a scene view, applying a font decoration to
AGS
has no effect.Text Symbol - Crash when
drawing
uses field alias name instead of field name when using advanced symbology.Info - Feature layers from federated 10.3 and 10.3.1 ArcGIS Servers cannot use the default advanced symbology setting.
- When a specific offset value is applied to both dynamic and static picture marker symbols, the displacement is different on both the graphics.
- In static rendering mode, setting Y offset on
AGS
causes the symbol to render twice, once at the old and once at the new location.Text Symbol - When invoking
to
onJson AGS
, certain text symbols may get serialized as "", losing their properties.Label Definition - Symbols should be loaded before being used in a renderer sent to a service.
- Random tile flickering may occur when adding polygons to a graphic overlay with horizontal fill symbol and transparent color, in static rendering mode.
AGS
for a polygon graphic spanning the dateline and rendered inText Symbol Static
mode is displayed in the wrong location when zooming out.- TextSymbol HaloColor and HaloSize properties have no effect when used with graphics in dynamic mode in a SceneView.
- Military polyline and polygon symbols that render correctly in 2D do not render correctly in a graphics overlay in dynamic mode in 3D.
- Military symbols requiring geometry conversions where the data is not multipoint are drawn incorrectly when zooming out.
- Some military line symbols do not display in the correct location.
- Symbol rotation type (arithmetic/geographic) is ignored by graphics.
- Creating a swatch returns a null image for scene symbols.
- Extruded graphics in a scene view may disappear while navigating the map.
- Selection halo thickness for various types of graphics are not consistently sized.
- Selection color does not display for a selected polygon with a transparent outline in a dynamic graphics overlay in a SceneView.
- Graphics overlays drawn in static mode do not render correctly. Use graphics overlays in dynamic mode.
- A service feature table will not render when unique value renderer contains classification values with commas.
Portal
- New TypeKeywords and Tags objects are created when a
AGS
is loaded, rather than repopulating the existing objects.Portal Item
Feature collections
- A feature collection in a web map that doesn't have a spatial reference for its extent will not draw.
AGS
.Feature Collection to
loses popup info properties.JSON - Creating
AGS
fromFeature Collection Table AGS
can throw an exception.Feature Query Result - When creating a feature collection from an array of graphics, the graphics' symbols are not honored. Instead, the default symbol is used.
- Very large feature collections may cause an app to run out of memory and crash.
Web maps
- Web maps with dynamic layers produced by ArcGIS Runtime do not draw correctly in ArcGIS Pro. Any overridden properties (renderer, labeling, opacity, sublayer visibility, and so on) will revert to service-specified defaults.
- Labeling behavior and display in a web map may not match between JavaScript and Runtime.
3D
- Scenes do not support vector tiled layers or image services.
- Files added to an existing raster elevation source at runtime are not applied to the scene view.
- Elevation of vertices of a 3D polyline drawn high above the surface, viewed in relative mode, can dip when the tile beneath it is out of view and therefore unloaded.
AGS
can return inaccurate Z values.Scene View.screen To Location - The rotation property of a viewpoint is not applied when it is used to set a viewpoint for another view.
- The color of a
AGS
can't be changed.Model Marker Symbol - Z-aware feature layers do not render correctly in scene view.
- Shadows do not work on scene view.
- When using a scene layer package with a terrain, it can be seen through terrain.
- Scene layer may not display due to limited device memory.
- Alpha property incorrectly applied during image export of a SceneView.
- Labels for feature layers do not display on scene view.
- An application might fail when using military symbology layers in a graphics overlay with a scene. This does not happen with military feature layers.
- Setting minimum scale on a graphics overlay in a scene view may not always be accurate.
- Set viewpoint with NAN scale value causes globe in SceneView to render black.
- Edges of polyline may appear behind globe in SceneView.
- A selection highlight doesn't work when two graphics overlap.
screen
sometimes gives unexpected elevations when zoomed out.To Location - In a scene view, changing the identify tolerance for graphics overlay behaves as though a zero tolerance is set.
- Graphics overlay selection halo does not appear around selected symbols that are fully transparent.
- The thickness of the selection halo varies between different symbol types.
- For both compact and exploded caches in Web Mercator, an error occurs reading the cache configuration.
- Rendering graphics in static mode near the poles or at varying distances from a camera may display unexpected results.
- Camera from CurrentViewpoint on SceneView always returns null.
- Multiple touch points for scene interactions, except for zoom, have not been implemented yet.
- Layer refresh interval does not work in 3D scenes.
- When rotating down on a scene view, the rotation stops when the clicked point is at 0,0.
- For a
Scene
(3D), WGS 1984 is the only supported spatial reference. - App can crash when no symbol is set on a extrusion renderer.
- Portions of building models may become transparent when panning the 3D scene.
- Models in a SceneView may render black on iPhone 5 devices.
- Identify operation can return empty results for
AGS
.ArcGIS Scene Layer - Graphics that not visible can be identified in a SceneView.
- Unable to identify a partially-transparent symbol for a graphic in a dynamic graphics overlay in a SceneView.
- Visibility of a graphic in a SceneView is determined by geometry, not display location.
- Transparent simple marker graphics on a 3D scene view do not correctly display all symbols that are directly behind them.
- A 3D scene may exhibit significant flickering while adding a new feature.
- Selected features may flicker in a scene view.
- Scene layer packages are sometimes visible through the terrain.
- 3D vertical extrusion is applied to a graphic's symbol when it should only be applied to the renderer's symbol.
- Rendering of dynamic graphics in a SceneView is fragmented in iOS simulator.