Release notes for 100.2.0

Version 100.2.0 of ArcGIS Runtime SDK for Android, also known as Update 2, is the second major update to 100.0.0. This topic describes what's new, provides a list of known limitations, and more.

For release notes for previous releases, see Related topics at the bottom of this page or sign in to the Downloads page and download the guide PDF for the version you want.

Enhancements

New layers

A new WMS layer is available that can display content from OGC-WMS Services in maps and scenes. You can identify features that are displayed, and generate a legend for them. Only WMS version 1.3 is supported at this release, but support for other versions will be added in a future release.

A new ENC layer is available that can display content from ENC (Electronic Navigational Charts) data in S-57 format. ENC is a vector chart that conforms to the IHO specifications contained in Publication S-57, which is a transfer standard for vector data. The Runtime implementation follows the S-52 Presentation Library 4.0 specification for rendering. You can identify features that are displayed, select features, and change various display settings for view groups, text, and other elements such as isolated dangers, contours, color scheme, etc. Support for the encrypted S-63 format will be added in a future release.

New data formats

Direct read of Shapefile datasets is now supported. Shapefiles can be added as a feature layer for display in maps and scenes. You can also add and edit features in the dataset through the shapefile feature table.

Support for the OGC GeoPackage format has also been added at this release. You can add vector and raster datasets in a GeoPackage to your maps and scenes as feature layers and raster layers respectively. You can also add and edit features in an existing GeoPackage feature table.

Rendering improvements

Feature layers can now be rendered dynamically in addition to statically, just like graphics overlays. You can set the rendering mode at the map or scene level via load settings, or on a layer by layer basis at the feature layer level. Dynamic rendering improves the appearance and interactivity of features during map or scene navigation. Feature layers containing point geometries are rendered dynamically now by default and their symbols remain screen-aligned in map views and will be "billboarded" in scene views. Feature layers containing polygon or polyline geometries are still rendered statically by default, but you can choose to render them dynamically to allow for 3D behavior such as extrusion based on feature layer attributes and surface placement based on z values

Display performance of graphics overlays has also been improved when updating large volumes of graphics. In some cases, the performance as a measure of frame rate is 2x faster compared to previous releases.

New multi-layer symbol types have been introduced to better represent working with feature layers that contain advanced cartography. At this release, these symbol types cannot be created by developers but can be authored in ArcGIS Pro and deployed through feature services, Mobile Map Packages, and Mobile Style files for use in the runtime. In future releases, these symbol types will be further expanded so that developers can produce sophisticated cartographic effects by combining multiple symbol layers.

Analysis

With the new Scene Analysis API you can define a variety of analyses to be performed using data displayed in the current 3D scene view, then render results that are updated dynamically. This release includes two types of scene visibility analyses: viewshed and line of sight. Viewshed highlights areas in your 3D scene that are visible from a given observer. Line of sight shows which segments are visible along a line drawn between an observer and a target location. For either type of analysis, the observer and/or target may be moving or stationary.

The new statistics query API allows you to get any of the following statistics for a specified field in a feature table: Sum, Average, Count, Minimum, Maximum, Standard Deviation, or Variance. In the statistics query parameters, you can define filters for features to include in the statistics (based on attributes, spatial relationships, or time extent) as well as how the results are grouped and sorted.

Coordinate systems and transformations

Geographic transformations (or datum transformations) can now be discovered, defined, used in project function of the geometry engine class, and chosen to be used by default. Prior to this release, the most suitable transformations have been used automatically whenever data is projected. A new transformation catalog class lets you look up a list of the best transformations to use when projecting between two spatial references that have different datums. The new method, getTransformationsBySuitability, provides a list of applicable transforms for the two spatial references you provide, ordered by suitability. You can even pass in a specific envelope to get back transforms suitable for that specific area. You can define a transformation by well-known ID (WKID) or create a custom transformation using well-known text strings. You can also change the default transformation that is used internally via gtdefaults_overrides.json. Both equation-based and grid-based transformations are supported. You can use isProjectionEngineDataMissing to determine whether required grid transformation data files are missing. The grid transformation files needed by your app can be downloaded from the downloads page. Read more about geographic transformations in the topic Spatial references.

Offline Maps - Preplanned workflow

This release enhances on-demand workflows with support for exporting and downloading vector tile packages from vector tile map services hosted by ArcGIS Online or ArcGIS Enterprise. Vector tile packages contain a default style to define how tiles are rendered. Vector tile layers can also reference custom styles as resources in a portal item. This release also supports downloading and applying custom style resources to vector tile layers on the client.

This release expands your ability to take maps offline with the new preplanned workflow. Offline maps allow your users to continue being productive even when their network connectivity is poor or non-existent. The preplanned workflow supplements the existing on-demand workflow by providing an alternative approach of allowing the map author to define and pre-create offline map areas instead of the field worker. Your field workers can then download map areas as required. With both of these offline workflows, the field worker can synchronize any updates to operational data when connectivity is restored.

Transactional editing

Transactional editing is now supported in the geodatabase and geodatabase feature tables. This allows you to perform a number of edits and then choose to commit all of them together as one unit, or roll them all back if any of them encounters an error. Nested transactions are not currently supported.

Localization

Directions returned by route task are available in 10 additional languages - Danish, Finnish, Hindi, Croatian, Indonesian, Norwegian Bokmål, Romanian, Serbian, Vietnamese, and Chinese (Taiwan). If the requested language isn't available, directions fall back to a default language instead of failing. Furthermore, error messages returned by Route, Service Area, and Closest Facility tasks are now consistent and translated into all supported languages. As part of these changes, some DirectionMessage types (Length, Time, Summary, TimeWindow, ViolationTime, ServiceTime, EstimatedArrivalTime, CumulativeLength) are no longer reported. These messages did not respect platform locale settings for formatting numbers, dates, and times messages, and the information they contained is available through other properties in the results.

Raster mosaics

Mosaic raster datasets can now be created on-the-fly. Once created, raster files can be added to them asynchronously. Have a look at the additional methods exposed on the MosaicDatasetRaster class

Kotlin

The Kotlin programming language is now supported. Kotlin code snippets have been added to this guide and Kotlin samples have been added to the Android SDK samples repo.

Deprecations

The previously deprecated constructor RouteTask(String) has been removed. Use the alternative constructor RouteTask(Context, String) instead, passing in the current Android Context in addition to the URL of the routing service.

Version 100.2 is the last release to support:

  • Android development for API levels 15(Android 4.0.3-4.0.4), 16 (Android 4.1-4.1.1), 17 (Android 4.2 - 4.2.2), and 18 (Android 4.3). In the next release, the minimum will be API 19 (Android 4.4).

Known issues resolved in this release

  • BUG-000092942: Related records are not returned from the query related method when querying a service through a reverse proxy
  • BUG-000098293: Android Runtime API does not display tiles from a LOD if the LOD above it does not have data
  • MapView freezes permanently on iOS. See GeoNet discussion.
  • ShapefileTable - How to project to a different spatial reference. See GeoNet discussion.
  • TextSymbol HaloColor and HaloSize properties have no effect when used with graphics in dynamic mode in a SceneView.
  • AGSMap's initialViewpoint does not work intermittently.
  • Inconsistent drawing delay for some features from a service feature table when zooming in and out.
  • Web map editing overrides are not applied to feature layers.
  • Crash may occur on 5.1.1 Android Nexus 7 when zooming and panning with vector tiled layers.
  • Reproject the area of interest to map's spatial reference when using OfflineMapTask.
  • TextSymbol for polygon graphic spanning the dateline and rendered in static mode is displayed in the wrong location when zooming out.
  • Z-aware feature layers do not render correctly in a SceneView.
  • Feature layer loads but doesn't render when there is a "." in the field name.
  • Popup.GeoElement.Attributes uses label/alias values instead of field names as keys for the attribute dictionary when used with ArcGIS map services.
  • RT_GeoView_getLayerViewState fails for layer that has loaded but not rendered yet.
  • Feature layers with indexes on GlobalID fields may cause an app to crash.
  • Functions are not supported in where clauses for labeling.
  • ServiceFeatureTable does not repopulate after calling ClearCache.
  • Querying a feature table fails to call completion handler when querying a table that failed to load.
  • AutoPanMode and InitialZoomScale ignored if they are set before starting LocationDisplay.
  • GeoprocessingJob.ToJson throws "invalid start of JSON" exception when it contains input parameter type of GeoprocessingFeatures with null features.
  • GeoprocessingJob.FromJson does not populate GeoprocessingFeatures.URL. Cannot rely on deserialized GeoprocessingJob if it contains GeoprocessingFeatures.Subsequent serialization of job fail because it becomes an invalid JSON.
  • Text in vector tiled layers may not display at certain scales.
  • Models in a SceneView may render black on iPhone 5 devices.

Known issues

Layers

  • RasterLayer may only display when viewed at a large scale. Workaround: Use ArcGIS Desktop to build pyramids for the raster.
  • RasterLayer.Name does not get populated with file name.
  • WMSSublayer.SubLayerContents returns NULL instead of ArrayObservable.
  • Vector tiled layers created from a URL do not have attribution.
  • ArcGISSceneLayer does not support legend info.
  • Loading feature layers that have fill symbols with an outline with of less than 0 will return an exception.
  • When adding rasters to a mosaic dataset that is already being used for a raster layer, the rasters will not display.

Maps (2D)

  • Identify operation on a WMS layer gives wrong results if the MapView is rotated.
  • MapView locationToScreen returns incorrect coordinates in wrap around mode.
  • MapView grid lines near the date line and poles may not display.
  • Cloning an unloaded Map does not render in a MapView.
  • Moving map view to a screen with a different DPI zooms the map in and out (5-10%).
  • Map view doesn't zoom to geometry if the supplied geometry's envelope has zero height or width.
  • 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.

Scenes (3D)

  • When setting a negative pitch value with the rotateTo function on Camera, roll is not changed.
  • Camera.rotateAround does not apply the value for roll.
  • For Polygon and Polyline graphic overlays, extrusion is not updated when value of attribute used in extrusion expression change.
  • 3D SimpleLineSymbol arrow marker will display visible artifacts along the line when using static rendering.
  • 3D SimpleLineSymbol arrow marker does not draw arrowheads when using dynamic rendering.
  • Labeling features and graphics is not supported in a SceneView.
  • Layer refresh interval is not supported on a SceneView.
  • Graphics that are not visible can be identified in a SceneView.

Services

  • When using ExportVectorTilesJob to download an item resource cache, job status will immediately change from NotStarted to Succeeded.
  • Definition expressions using time fields on service feature tables will result in no features being displayed.
  • Setting a color map raster function as rendering rule on an image service has no effect.
  • Setting a rendering rule on ImageServiceRaster must occur prior to load.
  • Identify does not return results when Geometry field is not exposed on service.
  • 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.
  • OfflineMapSyncTask doesn't always send updates to the service if it has layers with different origin spatial references.
  • Loading a ServiceFeatureTable causes an invalid JSON error when the service contains a reserved field name, such as one that starts with "gdb_".

Symbols, renderers, and graphics

  • PictureFillSymbol ScaleX and ScaleY not supported in static rendering mode.
  • Symbols in a layer do not render if the renderer has rotation expression based on a field that does not exist.
  • Diagonal fill symbols render in opposite directions between JavaScript and Runtime.
  • Symbol sizes for graphics in static mode differ in size between map and scene views.
  • TextSymbol doesn't honor the screen alignment property for feature layers.
  • Changing TextSymbol font weight or style is not supported on a SceneView.
  • Font decoration, halo, and background properties are not supported on TextSymbol for graphics and features in dynamic rendering mode in a SceneView.
  • Feature layers from hosted services on Portal for ArcGIS 10.3 and 10.3.1 ArcGIS Servers cannot use advanced symbology.
  • LabelDefinition.toJson will return an empty array for unsupported text symbols.
  • Saving a map with unloaded layers creates a portal item with no layers when displayed in ArcGIS Online.
  • A Bing Maps layer created with a Portal needs to load the Portal first.
  • New TypeKeywords and Tags objects are created when a PortalItem is loaded, rather than repopulating the existing objects.
  • A service feature table will not render when unique value renderer contains classification values with commas.
  • Well-formed polygons that intersect one of the globe's poles may not render correctly.
  • Symbol rotation type (arithmetic/geographic) is ignored by graphics
  • Creating a swatch from a scene symbol returns a null image.

Feature collections

  • Cannot identify a Point feature with an ObjectId of 0 in a FeatureCollection.
  • Z and M values in GeoPackage FeatureTables are not optional.
  • FeatureCollection.toJSON does not include popup info.
  • When creating a feature collection from an array of graphics, the graphics' symbols are not honored. Instead, the default symbol is used.

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.

General

  • PopupManager.isShowAttachments returns incorrect value for features from a map service.
  • Upper case characters in OAuth Redirect URIs will not work.
  • Popup title does not use name when the title is defined with a coded value domain field.
  • Field name in popup definition for Arcade expression does not include the title for the expression field.
  • Popup getSymbol returns null for features from a map service.
  • 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.
  • When using local street address locators, suggestion results without a house number cannot be used to retrieve results.
  • Adding rasters to MosaicDatasetRaster with invalid parameters can fail without notifying the user.
  • FileNotFoundException when opening incorrect file type for mobile map package (*.mmpk).

Related topics