Release notes for 100.1

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 OfflineMapTask 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 AGSLabelDefinition 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 AGSLabelDefinition 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 AGSWebTiledLayer 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 AGSImageTiledLayer and its subclass, AGSServiceImageTiledLayer. 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.

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 AGSHeatmapRenderer 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 AGSCoordinateFormatter 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

AGSMapView and AGSSceneView 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

  • AGSMapView.locationToScreen gives incorrect coordinates in wrap around mode.
  • 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 AGSFeatureTable does not complete if the table failed to load.
  • 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.
  • AGSArcGISSceneLayer does not support legends.
  • AGSGeoView.getLayerViewState fails for a layer that has not finished rendering.
  • Using AGSSketchEditor, you cannot digitize a polyline across the dateline.
  • 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_weak_ptr exception.
  • Gradient fills used in mobile map package are not displayed correctly in apps.
  • Invalid base layer, reference layer, or operational layer will not raise LayerViewStateChangedEvent under certain scenarios.
  • In some cases, a feature layer can have a load status of Loaded but getRenderer still returns null.
  • 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.
  • AGSPopup.getSymbol returns null for features from a map service.
  • 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 AGSMosaicDatasetRaster with some invalid parameters can fail without notifying the user.
  • Some 3D renderers on some platforms may not work correctly on AGSMosaicRasterDataset.
  • In some cases, the default rendering applied to raster data may appear different from how it appears in ArcGIS Online.
  • The LoadStatusChanged event doesn't fire when using a AGSMosaicDatasetRaster instance to create a mosaic dataset and binding it to a AGSRasterLayer for rendering.
  • 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 LayerViewState.Error ("Layer does not have SpatialReference") while loading. The layer will then transition to LayerViewState.Active after self-correcting and loading the layer.
  • Some raster layer operations may crash on iOS or macOS due to too many open file handles.
  • AGSRasterLayer doesn't free a used raster before the application is shut down.
  • 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 AGSImageServiceRaster is created with a URL, getPath should return null but instead it returns the URL.
  • 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 AGSImageServiceRaster after loading has no effect.
  • App may crash when exporting tile cache from image service that does not support it.

Symbols, renderers, and graphics

  • AGSTextSymbol doesn't honor the screen alignment property for feature layers.
  • Kerning does not work with simple Latin scripts, causing a performance problem with military symbol text.
  • AGSPictureFillSymbol width, height, and image properties are not working correctly on scene view.
  • When kerning is enabled on a statically-rendered AGSTextSymbol, it will appear misaligned and may render beyond the extent of its background.
  • In a scene view, changing AGSTextSymbol font weight or style does not affect the symbol as expected. The glyph spacing changes, but the glyphs themselves remain the same.
  • In a scene view, changing AGSTextSymbol halo color or size has no effect when symbolizing elements displayed in dynamic mode.
  • In a graphics overlay displayed using dynamic mode in a scene view, applying a font decoration to AGSTextSymbol has no effect.
  • Crash when drawingInfo uses field alias name instead of field name when using advanced symbology.
  • 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 AGSTextSymbol causes the symbol to render twice, once at the old and once at the new location.
  • When invoking toJson on AGSLabelDefinition, certain text symbols may get serialized as "", losing their properties.
  • 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.
  • AGSTextSymbol for a polygon graphic spanning the dateline and rendered in 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 AGSPortalItem is loaded, rather than repopulating the existing objects.

Feature collections

  • A feature collection in a web map that doesn't have a spatial reference for its extent will not draw.
  • AGSFeatureCollection.toJSON loses popup info properties.
  • Creating AGSFeatureCollectionTable from AGSFeatureQueryResult can throw an exception.
  • 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.
  • AGSSceneView.screenToLocation can return inaccurate Z values.
  • The rotation property of a viewpoint is not applied when it is used to set a viewpoint for another view.
  • The color of a AGSModelMarkerSymbol can't be changed.
  • 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.
  • screenToLocation sometimes gives unexpected elevations when zoomed out.
  • 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 AGSArcGISSceneLayer.
  • 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.

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