This page provides details about enhancements in the 100.9.0 release of ArcGIS Runtime SDK for Android. It also lists this release's deprecations, resolved issues, and known issues. You can view release notes for past SDK versions by scrolling to the bottom of this page or by downloading past versions of this guide (in PDF format) from the downloads page (requires sign-in).
This section describes new features and improvements (what's new).
Offline feature-linked annotation
Users can now take feature-linked annotation offline from a sync-enabled feature service to add new features, update existing feature geometry and attributes, and view the automatically positioned feature-linked annotation on the map. If users synchronize their changes with the online feature service, the annotation objects will be automatically updated on the server to reflect those changes. Other offline users can then synchronize with the feature service to obtain the updated feature-linked annotation.
Direct editing of the feature-linked annotation text, position, and font is not supported in this release.
Feature Layers now use tile-based requests to fetch and display features in a map when the underlying feature service supports this capability. Feature tiles enable ArcGIS Runtime to display more features from the service and provides faster initial load time by generalizing complex geometries for display. Feature tiles use a Protocol Buffers binary format to compress the data being transferred along with advanced HTTP caching semantics to reduce the impact of network latency and improve performance. At this release, feature tiles are not used to request features for display in a scene (3D).
Branch versioned feature services
At this release, ArcGIS Runtime supports working with branch versioned feature services. The enterprise geodatabase uses versioning to accommodate the needs of multiuser editing scenarios and long transactions. Branch versioned feature services are specifically designed for Web GIS and used throughout the platform, offline, and across portals. See Branch version scenarios in the ArcGIS Pro documentation for more information. Applications built with ArcGIS Runtime can browse the versions available on a feature service, choose a version to connect to or create a new one, and then display features from that version using feature layers. Edits made to the features in the feature layer are isolated to that version, and protected from changes being made to other versions. ArcGIS Pro can be used to reconcile-and-post changes from different versions at the end of the editing process.
Group layers preserved when opening or saving web maps
When your app writes to a web map on ArcGIS Online, any group layers you defined will be saved in the web map. Likewise, when reading a web map, your app will honor any group layers it finds.
Group visibility mode controls visibility of child layers in a group layer
The group visibility mode controls the visibility policy of a group layer and its child layers. The GroupVisibilityMode enum has the following values:
- Independent - Each child manages its own visibility independent of the parent group.
- Inherited - Each child inherits the visibility of its parent group.
- Exclusive - Only one child is visible at a time. All other child layers are not visible.
You can set the group visibility mode only on group layers. For more information, see the API Reference entry for GroupVisibilityMode.
Support for subtype group layers in web and mobile maps
At this release, ArcGIS Pro subtype group layers can be read from web maps and mobile maps. A subtype group layer can visualize feature data with different visibility, rendering, popup properties, and so on, for some or all of the subtypes in a feature table. If a subtype group layer is found when loading a web map or mobile map, it is represented as a SubtypeFeatureLayer. Saving a map that contains a SubtypeFeatureLayer will save the layer as a subtype group layer. Subtype feature layers are supported in offline maps and will work in offline editing workflows.
Provide a warning if a layer fails to fetch some content
If an active layer in a map view or scene view fails to fetch some of its content, a layer view status warning will be raised. The failure could be due to temporary problems such as the loss of a network connection, the failure of layer requests, or exceeding the max feature count. If the problem is not temporary, such as an invalid service, the status will be an error rather than a warning. You can get more information about the warning or error status by exploring the associated error object on the layer view state.
Respond to changes in a layer's visibility
The VisibilityChangedEvent can be received by any class derived from Layer, indicating that the layer's visibility has changed. If you implement and register an event handler in your layer's class, the ArcGIS Runtime will call your handler, passing a boolean visible property.
Handling this event can be important when a layer is part of a group layer, since the layer will be affected by the GroupVisibilityMode set on the parent group.
Maps and scenes
General improvements to scene lighting
When the lighting mode LIGHT_AND_SHADOWS or LIGHT is activated, the scene is now illuminated using a mix of direct light from the sun and indirect light dispersed from the environment. Also, this mix has been calibrated to represent changes to ambient light in twilight conditions and improve the transition between night and day.
Scene view honors refresh intervals
Layers in a SceneView will honor layer refresh intervals. This includes setting the refresh interval in code or reading the refresh interval from a web scene on ArcGIS Online.
Encrypted credential storage provided by default
Default encrypted credential storage is now provided by the Android SDK. Users can now create a new SharedPreferencesCredentialPersistence(Context) object and set it on the CredentialCache by calling setPersistence(CredentialPersistence). Users can also create their own CredentialPersistence object by implementing the methods provided by the CredentialPersistence interface.
MapView double-touch-drag gesture behavior updated
The behavior of the default MapView double-touch-drag gesture has been updated. Instead of doing a continuous animated zoom in/out when the pointer is moved up/down, the zoom is now discrete, or not continuous. This matches the behavior of the double-touch-drag gesture in Google Maps.
Pinch-to-zoom gesture behavior updated
By default, a PinchToZoomGestureDetector is set on the DefaultMapViewOnTouchListener, which overrides the android.view.ScaleGestureDetector. Users can revert to the use of the android.view.ScaleGestureDetector by setting the PinchToZoomGestureDetector to null on theDefaultMapViewOnTouchListener. When a PinchToZoomGestureDetector is set on the DefaultMapViewOnTouchListener, the following methods are not called:
MapView now supports fine control of user interactions
New, fine-control for user interactions is supported by MapView. With the new class MapView.InteractionOptions, the user can selectively disable/enable the following interactions:
- All interactions
- Zoom in/out
- Rotate. This action has also been improved so that by default, the map now snaps to north if the user rotates the map within an angle of +/- 7.5 degrees of north.
Navigation and routing
Coincident stops improvements
Navigation within ArcGIS Runtime now allows for coincident stops to be treated as a single destination which can prevent unneeded voice guidance arrival instructions. This is done via the skipCoincidentStops parameter that is part of a new RouteTrackerconstructor.
Enhanced navigation along a route
A new RouteTrackerLocationDataSource class has been added to enhance visualizing navigation along a route. Using this optional class provides the benefit of snapping the current location display symbol on to the route polyline if the user is determined to be still following the route during navigation.
Online services are supported in offline maps
Users can now take a map offline that has a mix of local on-device content as well as online service content (such as weather or traffic information). When network connectivity is available, your app users can utilize the online service content, but if there is no connection, users can keep working with their offline content. Apps may need to handle authentication to ensure access to online services. Online services in an offline map are supported by the GenerateOfflineMapJob. This functionality is not currently available with the DownloadPreplannedOfflineMapJob.
Check the publishing status of a map area
Map authors can create and publish map areas for field workers, in ArcGIS Online and ArcGIS Enterprise. Publishing a map area involves generating and storing new files of map content, such as basemaps and features, for download. You can build an app to download a map area using the DownloadPreplannedMapAreaJob. Before you download the map area, you can now check whether a map area’s publishing process is complete, has failed, or is still in progress. If the map area packaging has failed or is in progress, you will not be able to download it.
Support for offline maps with no updates
You can now take a map offline and avoid receiving updates. To do this, set the update mode on the offline map job parameters to "no Updates". This disables data synchronization on the map’s geodatabases and prevents the corresponding feature services from creating synchronization replicas. The benefits of this option are that the burden on the feature server is reduced and you will not need to unregister geodatabases when they are no longer required. This feature is supported by both GenerateOfflineMapParameters and DownloadPreplannedOfflineMapParameters.
OGC API - Features
This release introduces support for the OGC API - Features specification. Most of the features of OGC API - Features - Part 1: Core are supported. Note that the OGC API - Features specification is different from the Web Feature Service (WFS), which the Runtime APIs have supported for several releases.
There are new classes that expose the OGC feature service, feature service info, and feature collection info. These classes allow you to browse an OGC feature service and discover the feature collections available. An OGC feature collection represents a set of features in an OGC feature collection table (OgcFeatureCollectionTable).
The class includes two important members: the getFeatureRequestMode/setFeatureRequestMode methods and the populateFromServiceAsync method. Only FeatureRequestMode.MANUAL_CACHE mode is supported. This means populateFromServiceAsync must be called to query and return features from the service. If the service supports CQL_Text, you can use it in a query to populate features from the service. Note that the following capabilities are not supported in this release:
- Time-extent filtering.
- outFields parameter used with populateFromServiceAsync (not yet standardized in the OGC API - Features spec).
- QueryParameters.getOrderByFields used with populateFromServiceAsync (not yet standardized in the OGC API - Features spec).
Mosaic rule for image services
A mosaic rule defines how the individual rasters are combined into a single mosaicked image. With this release, mosaic rules defined in web maps, web scenes, mobile map packages, and mobile scene packages are honored while rendering image service rasters. You can also override the default mosaic rules with your own to control how overlapping areas in the mosaic are handled. In addition to how it's displayed, the mosaic rule may effect values returned when identifying, computing a histogram, or exporting the image. View dependent mosaic rules such as Center and Nadir are currently only supported in 3D scenes.
Improvements to identify
At version 100.9.0, rules applied to a raster layer on the client will be represented in the results when the layer is identified. Rendering rules to define things like color maps and hillshading, and mosaic rules to define how overlapping areas from individual images in the mosaic are handled will be considered in an identify operation. If present, values from image service or local raster attribute tables will also be included in identify results.
This release enhances datum transformations by adding support for vertical transformations between different vertical datums. Vertical transformations can now be discovered, defined, and specified in the project function of the geometry engine class. Prior to this release, a default best-choice transformation has been used automatically whenever data is projected between different vertical transformations; this release adds API representations allowing complete control over this process. The transformation catalog class lets you look up a list of the best vertical transformations to use when projecting between two spatial references that have different vertical datums. You can also pass in a specific envelope to get back transforms suitable for that specific area of interest. You can define a transformation by well-known ID (WKID) or create a custom transformation using well-known text strings. Both equation-based and grid-based transformations are supported. The Projection Engine Data download, available from the ArcGIS for Developers download area, includes new vertical transformation datasets.
Added the perspective cylindrical projection and Lambert conformal conic 1SP (1 standard parallel plus scale factor).
Geographic coordinate systems
New definitions for Argentina and Saudi Arabia.
- KSA-GRF17 9333 Saudi Arabia
- MMN 9251 Argentina - Tierra del Fuego onshore
- MMS 9253 Argentina - Tierra del Fuego onshore
- Tapi_Aike 9248 Argentina - south Santa Cruz
Vertical coordinate systems
Vertical coordinate systems added include the following:
- CGVD2013_CGG2013a_height 9245 Canada
- EVRF2000_Austria_height 9274 Austria
- SA_LLD_height 9279 South Africa - onshore
- SRVN16_height 9255 Argentina - onshore
Projected coordinate systems
New definitions for Guatemala, Austria, Argentina, Palestine, and China.
- Beijing_1954_Gauss_Kruger_CM_105E 21458 China - 102~E to 108~E onshore
- Beijing_1954_Gauss_Kruger_CM_111E 21459 China - 108~E to 114~E onshore
- Beijing_1954_Gauss_Kruger_CM_117E 21460 China - 114~E to 120~E onshore
- Beijing_1954_Gauss_Kruger_CM_123E 21461 China - 120~E to 126~E onshore
- Beijing_1954_Gauss_Kruger_CM_129E 21462 China - 126~E to 132~E onshore
- Beijing_1954_Gauss_Kruger_CM_135E 21463 China - east of 132~E
- Beijing_1954_Gauss_Kruger_CM_75E 21453 China - west of 78~E
- Beijing_1954_Gauss_Kruger_CM_81E 21454 China - 78~E to 84~E
- Beijing_1954_Gauss_Kruger_CM_87E 21455 China - 84~E to 90~E
- Beijing_1954_Gauss_Kruger_CM_93E 21456 China - 90~E to 96~E
- Beijing_1954_Gauss_Kruger_CM_99E 21457 China - 96~E to 102~E
- GTM 103598 Guatemala
- MGI_Austria_Central 9272 Austria - 11~50'E to 14~50'E
- MGI_Austria_East 9273 Austria - east of 14~50'E
- MGI_Austria_West 9271 Austria - west of 11~50'E
- MMN_Argentina_2 9252 Argentina - Tierra del Fuego onshore
- MMS_Argentina_2 9254 Argentina - Tierra del Fuego onshore
- Palestine_Grid_1923_Modified_TM 103699 Palestine Territory
- Pampa_del_Castillo_Argentina_1 9284 Argentina - 45.5~S to 50.3~S and west of 70.5~W
- Pampa_del_Castillo_Argentina_3 9285 Argentina - 42.5~S to 50.3~S and east of 67.5~W
- POSGAR_2007_UTM_zone_19S 9265 Argentina - Tierra del Fuego offshore west of 66~W
- Tapi_Aike_Argentina_1 9249 South Santa Cruz west of 70.5~W -52.000 -73.280 -50.330 -70.500
- Tapi_Aike_Argentina_2 9250 South Santa Cruz east of 70.5~W
Projection Engine data files
This 100.9.0 version of the Projection Engine data files, available on the Supplemental ArcGIS Runtime Data tab on the downloads page (requires sign-in), includes:
- New vertical subfolder for the new support for vertical transformations.
- NTv2 grid transformations added for Iceland between ISN2004 and ISN2016, and between ISN93 and ISN2016. Also for Netherlands between RD and NAP, and ETRS89.
- License information added for Switzerland geoid files (licensing information is now in a new License subfolder in the download.
For information on when and how to use the Projection Engine data files, see the Grid-based transformations section in the Spatial references topic.
Dictionary web style in a mobile map package
Mobile map packages created by ArcGIS Pro 2.6 can contain a reference to a dictionary web style. With ArcGIS Runtime version 100.9.0, a dictionary web style in a mobile map package can be read and used to render symbols.
A new trace type, loops, has been added at 100.9.0. Loops are areas of the network where flow direction is ambiguous. Within a loop, resources can flow in either direction. Loops are expected with mesh networks but usually indicate error conditions in radial networks. You can also discover loops using the new shortest path trace.
Shortest path trace
A new trace type, shortest path, has been added at 100.9.0, to identify the shortest path between two starting points. The shortest path is calculated using a numeric network attribute such as shape length. Cost- or distance-based paths can both be achieved using this type of trace.
Filter trace output
New with 100.9.0, you can filter the elements returned from a trace to a specific asset type or output condition. If such conditions are defined, every feature encountered during a trace is evaluated and only elements that satisfy these criteria are included in the trace result. For example, returning only wooden poles (asset_type = "pole-wood") from a subnetwork trace.
Geometry trace results
At 100.9.0, you can return a geometry result from a trace. The UtilityGeometryTraceResult exposes the geometry result for each potential geometry type: multipoint, polyline, and polygon. The geometry for these properties is the union of all geometries of that type returned by the trace. If the result does not include a certain geometry type, the corresponding property will be null. Using the geometry result is more efficient for displaying the trace result on the map, rather than iterating a result composed of utility elements.
Function trace results
At 100.9.0, you can return function results from a trace. A function is a trace configuration that allows you to run calculations on network attributes associated with traced features, for example, the sum of the length of all the wire traced. Several functions can be specified for a trace. In the trace results, a UtilityTraceFunctionOutput is returned for every function defined in the configuration. The trace function output gives you the trace function definition (calculation type, network attribute, and so on) as well as the function result.
Support for utility network schema version 4
With 100.9.0, support for utility network schema version 4 allows you to work with utility networks created with ArcGIS Pro 2.6. Utility network schema version 4 adds non-spatial object support for the telecom industry and for underground network modeling for electrical utilities. Non-spatial tables are included in UtilityNetwork.Definition.NetworkSources and the following new UtilityNetworkSourceUsageType enum values were added to describe them: JunctionObject, EdgeObject, StructureJunctionObject, and StructureEdgeObject. Non-spatial association types are excluded from UtilityNetwork.GetAssociationsAsync at this release.
Breaking API changes
There are no breaking API changes at this release.
- When calling the existing methods on TransformationCatalog , if you pass in two spatial references with vertical coordinate systems set with different vertical datums, then these methods will return HorizontalVerticalTransformation instances. There is no API change as the parent DatumTransformation class is already defined as the return type; however previously only GeographicTransformation would be returned. To ignore any vertical coordinate systems which may be set and replicate the former behavior, use the new overloaded methods on TransformationCatalog with the ignoreVertical parameter set to True.
- In 100.8.0, if using dynamic rendering and graphics z-order wasn't set, graphics in a graphics overlay were rendered in an order based on the type of geometry: point graphics were rendered on top of line graphics in the same graphics overlay, which were in turn rendered on top of polygon graphics. At 100.9.0, graphics are rendered as efficiently as possible. When the Z-order of graphics isn't specified, graphics are rendered in the order they were added (the first one added is at the bottom, last on top), regardless of the geometry type. There are situations where graphics order may change to provide rendering optimizations. If the order of graphics within a graphics overlay is critical, the z-order for each graphic in the overlay must be explicitly set.
The classic geocode locator format (*.loc) will not be supported after ArcGIS Runtime version 100.9.0. After this release, only the newer *.loz locators, introduced with ArcGIS Pro 2.3 and ArcGIS Runtime 100.5.0, will be supported.
Support for Android API levels 21 and 22 (Android 5.x, Lollipop) is deprecated. With the 100.10 release, the minimum will be API level 23 (Android 6.0, Marshmallow).
- BUG-000117177 Rendering extrusion for line features fails to work as expected in a 3D scene.
- BUG-000119384 Image service appears blurry if you zoom past it's maximum resolution.
- BUG-000130857 CompositeSymbol fails to render text in overlapping symbols with their correct Z level.
- BUG-000130657 Runtime does not display all placemarks, or crashes when a KML layer that contains the time-stamped placemarks is displayed.
- BUG-000130179 Runtime fails to load a KMZ ground overlay that is embedded within a folder from a URL path.
- BUG-000132293 The 32-bit unsigned integer raster file fails to render correctly as a raster layer.
- BUG-000131734 When drawing with a MultilayerPolylineSymbol or CompositeSymbol in SketchEditor, weird artifacts get left behind on the map.
- BUG-000131120 AnnotationLayer, with HSL color model based symbols, fails to load with the error No data.
- BUG-000129986 Runtime does not honor label placement properties of start or end of line for mobile map packages authored in ArcGIS Pro. Support for this enhancement requires the ArcGIS Pro label property to be updated to set the Offset along line property to either Along line from end or Along line from start in the Label class Position tab and the mobile map package re-packaged.
- Cloned feature layers from Geopackage fail to load with error Illegal state: The underlying GeoPackage is closed. See the GeoNet post.
- Spatial intersect query returns unexpected results with multi-part polyline geometries.GeoNet post
- BUG-000130181 Elevation(Z) value is not adjusted when changing the pitch using touch navigate in scene view.
- BUG-000118500 The error message, "Invalid argument: location data source has been started" is returned when setting 'MapView.LocationDisplay.IsEnabled = true' after multiple calls when the device has a slow internet connection.
- BUG-000132287 High disk usage on Hard Disk Drive (HDD) when panning map containing multiple tile layers.
- BUG-000131912 Runtime does not accurately represent the graphics behind the transparent elements in 3D models.
- BUG-000114058 Zooming in on an area that crosses the International Date Line results in the entire basemap.
- BUG-000131383 The RasterLayer.SpatialReference returns null for a raster data downloaded from a Danish data website. Workaround: Set the location of the Projection Engine data folder.
- BUG-000123436 Symbology with multiple symbol layers created in ArcGIS Pro renders incorrectly in a mobile map package (.mmpk).
- BUG-000127369 Runtime does not display label callout angle in a mobile map package (.mmpk).
- BUG-000126599 Feature symbology fails to display halos.
- BUG-000127371 Runtime fails to display raster symbology in a mobile map package (.mmpk).
- BUG-000127860 Labels fail to display when querying the esriFieldTypeDate field in definitionExpression.
- BUG-000131368 UserCredential.createFromToken throws "com.esri.arcgisruntime.io.JsonEmbeddedException: Unable to generate token." error message.