Release notes for 100.1

This page provides details about enhancements in the 100.1.0 release of ArcGIS Runtime SDK for .NET. It also describes what's new, what's changed, and known limitations in this release.

What's new

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.0, 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.

Client-side labeling control

A new LabelDefinition 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 a LabelDefinition 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 WebTiledLayer 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 ImageTiledLayer and its subclass, ServiceImageTiledLayer. 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

You can now display heat maps from web maps.

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, 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 CoordinateFormatter 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

MapView and SceneView 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.

Issues addressed in this release

The following issues reported with ArcGIS Runtime SDK for .NET version 100.0.0 have been addressed in this release.

Known limitations

The following list describes known limitations or issues with the 100.1.0 release.

Maps, layers, and general

  • iOS: The minimum required version of Xamarin.iOS is 10.6.0.10

  • Projects created from the v100.0 ArcGIS Runtime Application (WPF) template require manual removal of the NuGet package error condition when upgrading to v100.1. Until the error is removed, the project will not build and reports NuGet package Esri.ArcGISRuntime.WPF.100.0.0 is missing. Follow these steps to remove the error.

    1. In the Visual Studio Solution Explorer right click on the project.
    2. Choose Unload Project from the content menu.
    3. In Solution Explorer right click the unloaded project (listed as unavailable).
    4. Choose Edit .csproj / .vbproj from the context menu to open the project file as XML.
    5. Find and delete the following line (towards the bottom of the project file):
    6. Close and save changes to the project file.
    7. In the Solution Explorer right click the unloaded project.
    8. Choose Reload Project.
  • Map.SaveAsAsync and FeatureCollection.SaveAsAsync now take a RuntimeImage argument for the thumbnail rather than System.Uri. The overloads that take System.Uri are deprecated at this release. The easiest way to get a RuntimeImage for use as a thumbnail is to call MapView.ExportImageAsync.

  • MapView.ExportMapImage doesn't work when executed in a Virtualized environment.

  • Layer.LoadAsync intermittently fails to return to caller for some layer types when instantiated from PortalItem.

    • Workaround: Instantiate the layer via URI (rather than a PortalItem instance), which is accessible on the PortalItem. The example below instantiates a FeatureLayer using this workflow.

      Use dark colors for code blocksCopy
      1
      2
      3
      4
      5
      6
      7
      var serviceItemUrl = "http://www.arcgis.com/home/item.html?id=99fd67933e754a1181cc755146be21ca";
      var serviceItem = await PortalItem.CreateAsync(new Uri(serviceItemUrl));
      
      // Use the item's ServiceUrl instead of the item instance
      var layer = new FeatureLayer(new Uri($"{serviceItem.ServiceUrl}/0"));
      
      await layer.LoadAsync();
  • When connecting to PKI-secured ArcGIS Portal for Enterprise, ArcGISPortal.Uri cannot be used directly to create a CertificateCredential. Runtime will continuously request authentication unless /sharing or /sharing/rest is included with the CertificateCredential.ServiceUri.

    • Workaround: The ServiceUri provided to CertificateCredential must be an absolute URI that includes /sharing or /sharing/rest.

      Use dark colors for code blocksCopy
      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      // Define a credential request
      CredentialRequestInfo cri = new CredentialRequestInfo
      {
          // Define the service URI (include /sharing or /sharing/rest)
          ServiceUri = new Uri(@"https://myportal.com/gis/sharing/rest"),
      
          AuthenticationType = AuthenticationType.Token,
          GenerateTokenOptions = new GenerateTokenOptions
          {
              TokenAuthenticationType = TokenAuthenticationType.OAuthImplicit
          }
      };
  • When iterating a FeatureQueryResult (using foreach, e.g.), asynchronous calls throw an exception.

    • Workaround: iterate results using FeatureQueryResult.ToList(), FeatureQueryResult.ToArray(), or FeatureQueryResult.ElementAt(index).
  • A call to Feature.LoadAsync when looping through RelatedFeatureQueryResult causes an extra iteration.

    • Workaround: iterate results using RelatedFeatureQueryResult.ToList(), RelatedFeatureQueryResult.ToArray(), or RelatedFeatureQueryResult.ElementAt(index).
  • Android: Vector tile layers do not render on the Visual Studio emulator.

  • Xamarin Forms: MapView or SceneView will not display if placed in a Grid.Row that has its Height defined as Auto.

  • When using LocalGeoprocessingService in a Local Server with GeoprocessingServiceType.AsynchronousSubmitWithMapServiceResult mode, GeoprocessingResult.MapImageLayer isn't populated correctly.

    • Workaround: build a URL that references the map image result and use it to create a new ArcGISMapImageLayer.

      Use dark colors for code blocksCopy
      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      // ** Workaround for local server when using result map server to render results as an image
      // Note: the 'job' variable represents a GeoprocessingJob that has completed
      
      // Get URL of the local geoprocessing service from LocalGeoprocessingService
      var serviceUrl = localGeoprocessingService.Url.ToString();
      
      // Construct URL to the map server result
      var mapServerUrl = serviceUrl.Replace("GPServer", $"MapServer/jobs/{job.ServerJobId}");
      
      // Create new ArcGISMapImageLayer from the constructed URL
      var mapImageLayer = new ArcGISMapImageLayer(new Uri(mapServerUrl));
      
      // ** Workaround end
  • MapView``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 FeatureTable 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.

  • ArcGISSceneLayer does not support legends.

  • GeoView.GetLayerViewState fails for a layer that has not finished rendering.

  • Using SketchEditor, 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.

  • Moving map view to a screen with a different DPI zooms the map in and out (5-10%).

  • 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 Renderer 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.

  • Popup Symbol 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. It's recommended to keep the geodatabase as a global variable.

  • 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.

  • 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 MosaicDatasetRaster with some invalid parameters can fail without notifying the user.
  • Some 3D renderers on some platforms may not work correctly on MosaicRasterDataset.
  • 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 MosaicDatasetRaster instance to create a mosaic dataset and binding it to a RasterLayer 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.
  • RasterLayer doesn't free a used raster before the application is shut down.
  • Xamarin Android: Some raster formats crash the app when deployed on VisualStudio Emulator.

Image services

  • When an ImageServiceRaster is created with a URL, Path 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.
  • 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 ImageServiceRaster after loading has no effect.
  • App may crash when exporting tile cache from image service that does not support it.

Symbols, renderers and graphics

  • TextSymbol 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.
  • PictureFillSymbol width, height, and image properties are not working correctly on scene view.
  • When kerning is enabled on a statically-rendered TextSymbol, it will appear misaligned and may render beyond the extent of its background.
  • In a scene view, changing TextSymbol 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 TextSymbol 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 TextSymbol 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 TextSymbol causes the symbol to render twice, once at the old and once at the new location.
  • When invoking ToJson on LabelDefinition, 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.
  • TextSymbol 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 PortalItem 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.
  • FeatureCollection.ToJSON loses popup info properties.
  • Creating FeatureCollectionTable from FeatureQueryResult 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.
  • SceneView.ScreenToLocationAsync 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 ModelMarkerSymbol can't be changed.
  • Models in a SceneView may render black on Android simulators.
  • Z-aware feature layers do not render correctly in scene view.
  • Xamarin Forms: Applying a BlendRenderer to a Raster displayed in a Scene crashes when running on iOS or Android.
  • 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.
  • ScreenToLocationAsync 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 ArcGISSceneLayer.
  • 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.