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 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.
Client-side labeling control
A new Label
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 Label
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 Web
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 Image
and its subclass, Service
. 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
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 Coordinate
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
Map
and Scene
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.
-
Mobile Map Packages: cannot zoom or pan to the full extent of the data.
-
Duplicate label behavior is not honoring the preserve duplicates setting.
-
Marker symbols on lines created in ArcMap do not display correctly.
-
Xamarin.Android: 'texture2D' type is for Vulkan api only.
-
Local
not returning all results when usingServer LIKE
and Wildcard operators. -
How to check DirectX Feature Level?
-
ClickOnce Deployments cannot locate native ArcGIS Runtime components.
-
Geodatabase
fails when unknown field is encountered.Feature Table. Add Attachment -
DX11 Crash when rendering polygon on low-end hardware.
-
Runtime
returns always false.Dictionary. Try Get Value -
Calling
Graphics
raises exception: "Cannot call this method in this context: Graphic already has an assigned id."Overlay. Graphics. Add(graphic) -
Crash on virtual machines when no hardware GPU support is present.
-
Failure to return results when performing an identify operation on
Graphics
.Overlay -
Correctly report Local Server license error when starting with Lite or Basic license.
-
Graphics do not honor outline/border and selection when switching
Rendering
.Mode -
Graphics do not honor outline/border and selection when switching basemaps with different SRs.
-
Android:
Sketch
isEditor null
ifMap
is in a predefined .axml layout file.View -
Android: frequent
Set
calls causes an exception.Viewpoint Async -
Refresh
does not update feature attributes.Object Id -
Portal
does not change a portal search.Query Parameters. Can Search Public -
ENH-000085084: Request to update local gdb with user's edits when
Geodatabase
is called.Sync Task. Sync Geodatabase Async -
ENH-000088684: Move graphic anchor point (Rotate point) so it does not overlap with graphic vertex in .NET SDK.
-
BUG-000093112:
Geodatabase
returns a bad allocation error when querying densely populated datasets.Feature Table. Query Async -
BUG-000102890: Undoing a previous edit that was made by draging a vertex using the
Sketch
class in the ArcGIS DotNet Runtime 100.0 SDK causes the vertex to disappear from the screen.Editor -
BUG-000093171:
Picture
Marker Symbol X
andOffset Y
do not work properly for the renderer ofOffset ArcGIS
in ArcGIS Runtime.Dynamic Map Service Layer -
BUG-000103952: Re-entering a Xamarin iOS application causes the map to (occasionally) render differently, stretching it either further down, or to the left on the screen.
-
BUG-000102348: An unhandled exception is thrown when updating location in a map while the app is in background mode.
- Also reported via https://geonet.esri.com/message/655273
-
BUG-000103092: Rapid zoom/pan of a
ArcGIS
crashes the application.Tiled Layer -
BUG-000082986:
Text
doesn't honorSymbol Background
whenColor Graphics
Layer Rendering
isMode Static
. -
BUG-000103058: Layers removed from an ArcGIS Online web map are still returned as OperationalLayers when loaded in ArcGIS Runtime Map.
-
BUG-000093873: When multiple map views are used, the ArcGIS Runtime SDK for .NET app crashes in a local machine and freezes in the Remote Desktop Connection.
-
BUG-000102661: Custom tiled layers cannot be added to a
Scene
in ArcGIS Runtime SDK for .Net 100.0 applications.View -
BUG-000091175:
Local
returnsServer Error Code 500
when loading a map package that uses third party fonts.: Failed to create service -
NIM097192: Local GP Services do not handle Japanese characters in task parameter names.
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
Nu
. Follow these steps to remove the error.Get package Esri. ArcGIS Runtime. WP F.100.0.0 is missing - In the Visual Studio Solution Explorer right click on the project.
- Choose Unload Project from the content menu.
- In Solution Explorer right click the unloaded project (listed as
unavailable
). - Choose Edit .csproj / .vbproj from the context menu to open the project file as XML.
- Find and delete the following line (towards the bottom of the project file):
- Close and save changes to the project file.
- In the Solution Explorer right click the unloaded project.
- Choose Reload Project.
-
Map.
andSave As Async Feature
now take aCollection. Save As Async Runtime
argument for the thumbnail rather thanImage System.
. The overloads that takeUri System.
are deprecated at this release. The easiest way to get aUri Runtime
for use as a thumbnail is to callImage Map
.View. Export Image Async -
Map
doesn't work when executed in a Virtualized environment.View. Export Map Image -
Layer.
intermittently fails to return to caller for some layer types when instantiated fromLoad Async Portal
.Item -
Workaround: Instantiate the layer via URI (rather than a
Portal
instance), which is accessible on theItem Portal
. The example below instantiates aItem Feature
using this workflow.Layer Use dark colors for code blocks Copy 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,
ArcGIS
cannot be used directly to create aPortal. Uri Certificate
. Runtime will continuously request authentication unlessCredential /sharing
or/sharing/rest
is included with theCertificate
.Credential. Service Uri -
Workaround: The
Service
provided toUri Certificate
must be an absolute URI that includesCredential /sharing
or/sharing/rest
.Use dark colors for code blocks Copy // 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
Feature
(usingQuery Result foreach
, e.g.), asynchronous calls throw an exception.- Workaround: iterate results using
Feature
,Query Result. To List() Feature
, orQuery Result. To Array() Feature
.Query Result. Element At(index)
- Workaround: iterate results using
-
A call to
Feature.
when looping throughLoad Async Related
causes an extra iteration.Feature Query Result - Workaround: iterate results using
Related
,Feature Query Result. To List() Related
, orFeature Query Result. To Array() Related
.Feature Query Result. Element At(index)
- Workaround: iterate results using
-
Android: Vector tile layers do not render on the Visual Studio emulator.
-
Xamarin Forms:
Map
orView Scene
will not display if placed in aView Grid.
that has itsRow Height
defined asAuto
. -
When using
Local
in a Local Server withGeoprocessing Service Geoprocessing
mode,Service Type. Asynchronous Submit With Map Service Result Geoprocessing
isn't populated correctly.Result. Map Image Layer -
Workaround: build a URL that references the map image result and use it to create a new
ArcGIS
.Map Image Layer Use dark colors for code blocks Copy // ** 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
-
-
Map
gives incorrect coordinates in wrap around mode.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
Feature
does not complete if the table failed to load.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.
-
ArcGIS
does not support legends.Scene Layer -
Geo
.View Get
fails for a layer that has not finished rendering.Layer View State -
Using
Sketch
, you cannot digitize a polyline across the dateline.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.
-
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
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
butRenderer
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
Mosaic
with some invalid parameters can fail without notifying the user.Dataset Raster - Some 3D renderers on some platforms may not work correctly on
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 Mosaic
instance to create a mosaic dataset and binding it to aDataset Raster Raster
for rendering.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 Raster
doesn't free a used raster before the application is shut down.Layer - Xamarin Android: Some raster formats crash the app when deployed on VisualStudio Emulator.
Image services
- When an
Image
is created with a URL,Service Raster 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
Image
after loading has no effect.Service Raster - App may crash when exporting tile cache from image service that does not support it.
Symbols, renderers and graphics
Text
doesn't honor the screen alignment property for feature layers.Symbol - Kerning does not work with simple Latin scripts, causing a performance problem with military symbol text.
Picture
width, height, and image properties are not working correctly on scene view.Fill Symbol - When kerning is enabled on a statically-rendered
Text
, it will appear misaligned and may render beyond the extent of its background.Symbol - In a scene view, changing
Text
font weight or style does not affect the symbol as expected. The glyph spacing changes, but the glyphs themselves remain the same.Symbol - In a scene view, changing
Text
halo color or size has no effect when symbolizing elements displayed in dynamic mode.Symbol - In a graphics overlay displayed using dynamic mode in a scene view, applying a font decoration to
Text
has no effect.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
Text
causes the symbol to render twice, once at the old and once at the new location.Symbol - When invoking
To
onJson Label
, certain text symbols may get serialized as "", losing their properties.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.
Text
for a polygon graphic spanning the dateline and rendered inSymbol 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
Portal
is loaded, rather than repopulating the existing objects.Item
Feature collections
- A feature collection in a web map that doesn't have a spatial reference for its extent will not draw.
Feature
.Collection To
loses popup info properties.JSON - Creating
Feature
fromCollection Table Feature
can throw an exception.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.
Scene
.View Screen
can return inaccurate Z values.To Location Async - The rotation property of a viewpoint is not applied when it is used to set a viewpoint for another view.
- The color of a
Model
can't be changed.Marker Symbol - 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
Blend
to aRenderer Raster
displayed in aScene
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.
Screen
sometimes gives unexpected elevations when zoomed out.To Location Async - 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
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.