Skip To Content

Release notes for 10.2.6

In this topic

These release notes describe details of the ArcGIS Runtime for .NET 10.2.6 release. This release adds support for 3D mapping and Keyhole Markup Language (KML) data sources. The release also improves the quality of the APIs by addressing critical issues affecting editing, labeling, and the use of local data sources.

New functionality

The 10.2.6 release includes new classes to support 3D mapping, such as the SceneView and Scene controls. An online or local data source can be used to define an elevation surface for your scene, and there are several options for displaying graphics relative to the surface using a variety of 3D symbols and renderers. A new SceneLayer class enables you to consume a new 3D service type available in ArcGIS for Server 10.3, called scene services. KML data can now also be consumed in your ArcGIS Runtime app (in a map or scene) using the KmlLayer class.

Note:

Several new topics have been added to the Developers Guide that describe 3D mapping in ArcGIS Runtime SDK for .NET, including how to create a scene, navigate, add layers, and display 3D graphics.

The following enhancements have also been made.

  • ENH-000082926: Localize labels of MapGrid.
  • ENH-000086053: Expose a property to allow users to explore the map with a stylus.
  • AddAsync, UpdateAsync, and DeleteAsync methods on FeatureTable now accept IEnumerable<Feature>.

Bug fixes

In addition to addressing overall quality and the new functionality added to the APIs, the following bugs have been fixed with the 10.2.6 release.

  • BUG-000082908: Shifted position when changing the geometry of TextSymbol graphic with rending mode Static.
  • BUG-000083073: ArcGIS Runtime apps fail to execute when run within a directory that contains a multi-byte character.
  • BUG-000083158: Shapefile feature attributes look garbled when using a Shift-JIS encoding instead of UTF-8.
  • BUG-000083933: A LabelPosition setting of FixedPositionWithOverlaps is ignored after first draw.
  • BUG-000084223: Changing the MapView control position does not rerender the map and ignores any map changes.
  • BUG-000084521 / BUG-000084625: Editing a feature layer attribute which participates in a label definition on a feature service causes a crash.
  • BUG-000084603: The ShapefileTable class is unable to read a shapefile in a Japanese name path.
  • BUG-000084624: A AttributeLabelClass with a TextExpression ignores the LabelPlacement value after updating graphic attributes.
  • BUG-000084781: The ShapefileFeatureTable class reads date values incorrectly.
  • BUG-000084845: Unwanted white line when calling HitTest on a line symbol defined by CIM json.
  • BUG-000085172: Intermittent exceptions occur when updating graphic geometries on a very frequent basis.
  • BUG-000086359: An InvalidOperationException error occurs when syncing with a feature service which has versioned data that supports per replica synchronization.
  • BUG-000086664 / BUG-000086665: Calling ServiceFeatureTable.ApplyEditsAsync with a large number of features returns a task canceled exception.
  • Opening Geodatabase throws exception: "non-convertible value type in convert".
  • Reusing the MapView or Map control causes the map to freeze (Store/Phone only).
  • Setting MapView.MinScale in XAML has no effect.
  • Polylines from a runtime geodatabase do not renderer as expected.
  • Exception when removing layers and panning (Store/Phone only).

Known issues

The following list describes known issues or limitations with the 10.2.6 release. Where one is available, a workaround is described.

Note:

Several graphic issues are specific to the graphic layer rendering mode. The implied workaround for these issues is to change the rendering mode (if practical for your use case). See the Rendering modes topic for more information about choosing the rendering mode for a GraphicsLayer or GraphicsOverlay.

  • HydrographicS57Layer is not available in the Windows Phone API. This layer type is available for Windows Store and Windows Desktop apps only at this release. We hope to make this available for Windows Phone in a future release.
  • [3D] Graphics may not display correctly (may become distorted, in other words) when near the horizon.
  • Changes to an existing CompositeSymbol (adding, removing, or updating the symbols it contains) are not reflected in the display.
    • Workaround: Recreate, modify, and re-apply the composite symbol as illustrated in the following example.
      CompositeSymbol newSymbol = null;
      private void UpdateCompositeSymbol(Graphic graphic)
      {
        // ask for garbage collection to remove unused objects
        GC.Collect();
        
        // get the current symbol (now the 'old' symbol)
        CompositeSymbol oldSymbol = graphic.Symbol as CompositeSymbol;   
        
        // create a new composite symbol
        newSymbol = new CompositeSymbol();
      
        // copy all the symbols in the current composite to the new one
        foreach (Symbol s in oldSymbol.Symbols)
        {
          newSymbol.Symbols.Add(s);
        }
      
        // set the old symbol to null to mark it for eventual garbage collection
        oldSymbol.Symbols.Clear();
        oldSymbol = null;
      
        // TODO: make desired changes to newSymbol here ...
      
        // apply the updated composite symbol to the input graphic
        graphic.Symbol = newSymbol;      
      }
  • [3D] Labels for a FeatureLayer do not display in a scene.
    • Workaround: Query the layer's FeatureTable, then create a GraphicsLayer to display the results with label classes.
  • [3D] A change to the selection color (for a GraphicsLayer, FeatureLayer, or SceneLayer, for example) is only applied when the scene is drawing. If a selection color is changed after the scene has completely rendered, the new color is not effective immediately. It will be applied after the next navigation of the scene (pan or zoom).
  • [3D] Graphics displayed using absolute surface placement mode may not update their z position (elevation, for example) when elevation exaggeration is applied to the scene.
    • Workaround: After an elevation exaggeration is applied to the scene, clear and recreate the graphics displayed in the layer.
  • [3D] Z values (elevation, for example) from a feature service are not honored in a FeatureLayer displayed in a scene.
    • Workaround: Query the feature service with ReturnZ = true and display the results in a GraphicsLayer with the desired elevation mode, as shown in the following example.
      var queryTask = new QueryTask(new Uri("http://myserver/arcgis/rest/services/FlightPaths3D/FeatureServer/0"));
      var query = new Query("1=1");
      query.ReturnZ = true;
      
      var result = await queryTask.ExecuteAsync(query);
      
      var graphicsLayer = MySceneView.Scene.Layers["MyGraphicsLayer"] as GraphicsLayer;
      graphicsLayer.GraphicsSource = from g in result.FeatureSet.Features select new Graphic(g.Geometry);
  • Only fields containing string values are supported for use as the TemporalRenderer.TrackIdField.
  • [3D] Layers in a Scene do not display correctly around the poles.
  • [3D] GraphicsLayer in static rendering mode does not render picture symbols using a relative or absolute URI.
  • [Windows Phone] Loading large datasets can be memory intensive and may cause crashes on low memory devices. If your app requires scenes, working with KML datasets that contain large amounts of data, and so on, you might consider disabling support for low-memory phones.
  • [3D] Line styles for SimpleLineSymbol other than SimpleLineStyle.Solid are not honored on graphics in a Scene when rendered in dynamic mode using absolute or relative placement.
  • Sharing the same map instance simultaneously among two or more map views, or scene instance among multiple scene views, is not supported and is likely to cause stability or performance issues. Similar issues are likely to be encountered when attempting to share graphics overlays, layers, or distinct feature layer instances that share the same feature service (ServiceFeatureTable) between multiple maps or scenes at the same time.
    • Workaround: if you need to reuse a Map or Scene in another view control, you should ensure that it is then removed from the previous control. The same technique can be used for reusing a layer instance between maps and/or scenes, as illustrated in the following example.
      var layer = MyMapView1.Map.Layers["MyFeatureLayer"] as FeatureLayer;
      
      MyMapView2.Map.Layers.Add(layer); // add the layer to a new map
      MyMapView1.Map.Layers.Remove(layer); // remove the layer from its original map
  • [3D] A scene does not use the extent of the base layer to define an initial view. This contrasts with the behavior of the map.
    • Workaround: Handle the LayerLoaded event for the Scene control and set the initial view to focus on the layer.
      private void MySceneView_LayerLoaded(object sender, Esri.ArcGISRuntime.Controls.LayerLoadedEventArgs e)
      {
          if (e.LoadError == null && e.Layer.ID == "MyLayer")
          {
              var initialViewpoint = new ViewpointExtent(e.Layer.FullExtent);
              var animationDuration = TimeSpan.FromSeconds(2);
              MySceneView.SetViewAsync(initialViewpoint, animationDuration);
          }
      }
  • [3D] Graphics with MultiPoint geometry do not render in dynamic mode.
  • [3D] GPResultImageLayer does not render at all scales in a SceneView.
    • Workaround: Use GetResultMapServiceLayer instead of GetResultImageLayer to show the results of a geoprocessing task (for geoprocessing services running on ArcGIS for Server 10.1 or later).
  • A TemporalRenderer applied to a GraphicsLayer or GraphicsOverlay may not work as expected when the RenderingMode is static.
  • [3D] The display of polyline graphics in a Scene may be degraded during a SetViewAsync animation when the RenderingMode is static.
  • [3D] The following properties of PictureFillSymbol are not honored for graphics displayed in a Scene (whether in static or dynamic rendering mode): Angle, Opacity, Width, Height.
  • The following properties of PictureFillSymbol are not honored for graphics displayed in a Map while in static rendering mode: Angle, Opacity.
  • A search for features from an ArcGIS for Server 10.3 service using FindTask.ExecuteAsync does not honor a value of true for FindParameters.Contains. This prevents searching for anything but exact matches of the find string from those services.
    • Workaround: manually build and send the REST request and include a false value for the contains parameter. An example of a class to send such a request and process the results is available on the GeoNet forum.
  • [3D] Opacity set on a GraphicsLayer or GraphicsOverlay is not applied when rendered in dynamic mode.
  • [3D] Polylines that cross the antimeridian (180 degrees longitude) may not be constructed as expected (the line may circle the globe in the other direction).
  • MapView or SceneView are not rendered correctly if added to a ContentPresenter.ContentTemplate.
    • Workaround: wrap the view control in a UserControl, then reference the user control in the ContentTemplate.
  • Labels are not displayed for lines that share a vertex and have the same label value. While this is often the desired behavior (a single label for a street rather than one for each segment that composes it, for example), there is no option to enable distinct labels under those conditions.
  • TemporalRenderer.LatestObservationRenderer may not display when zooming in and out.
  • [3D] When displayed in a Scene, a FeatureLayer does not request additional features after exceeding the feature transfer limit (set for the service). Unlike in a Map, where the layer may request additional features as new extents are displayed (dynamic display mode), when in a Scene, the layer will work only with the originally retrieved set of features for the entire session (snapshot display mode).
  • ArcGIS Runtime SDK for .NET is targeting support for KML version 2.2 and some extensions. The following lists some of the functionality, either from the KML 2.2 specification or Google extensions, that is not available in the ArcGIS Runtime KML implementation as of the 10.2.6 release.
  • [3D] New features cannot be added to a feature layer when editing in a scene. Geometry returned by SceneView events (SceneView.SceneViewTapped, for example) contains Z-coordinate values. These coordinates cannot be saved in a standard feature service.
    • Workaround: the geometry returned can be modified to remove z-coordinate values, which allow it to be stored successfully in a two-dimensional feature layer. The following example removes the z-coordinate value from a MapPoint before using the geometry to store a new feature.
      // get the 3D point passed to the SceneViewTapped event (with Z coordinate, in other words)
      var dddPoint = e.Location;
      
      // create a MapPointBuilder to edit the point
      var pointBuilder = new Esri.ArcGISRuntime.Geometry.MapPointBuilder(dddPoint);
                      
      // clear the Z coordinate value (set to NaN)
      pointBuilder.Z = double.NaN;
      
      // return the 2D point from the builder
      var pointWithoutZ = pointBuilder.ToGeometry();
      
      // get the feature table from the feature layer
      var featureLayer = MySceneView.Scene.Layers["MyFeatureLayer"] as FeatureLayer;
      var featureTable = featureLayer.FeatureTable as ServiceFeatureTable;
      var newFeature = new GeodatabaseFeature(featureTable.Schema);
      
      // create a new feature and set its geometry with the Z-less map point
      newFeature.Geometry = pointWithoutZ;
                      
      // add the new feature and apply edits
      await featureTable.AddAsync(newFeature);
      await featureTable.ApplyEditsAsync();
  • BUG-000082987 / ENH-000086717: TextSymbol.AngleAlignment value of Screen is not honored when RenderingMode is static
  • BUG-000083692: AttributeLabelClass ignores the positioning values for the TextSymbol.
  • SymbolDictionary returns a symbol when using GetSymbolImage with name value that isn't in the dictionary.
  • [3D] Symbol width and height are not honored for a PictureFillSymbol based on an absolute URL in a scene.

Breaking changes

For a detailed description of the changes between the previous (10.2.5) and current (10.2.6) releases, see the Esri.ArcGISRuntime assembly comparison.

The following properties have been removed.

  • Esri.ArcGISRuntime.ArcGISRuntimeEnvironment.UseTextureFonts
  • Esri.ArcGISRuntime.Controls.ViewBase.Editor
    Note:

    This property is still available on the MapView control. It is no longer defined on the abstract ViewBase base class.

  • Esri.ArcGISRuntime.Controls.ViewBase.InteractionOptions
    Note:

    This property is still available on the MapView control. It is no longer defined on the abstract ViewBase base class.

The following methods have changed their signature.

  • Esri.ArcGISRuntime.Tasks.NetworkAnalyst.RouteParameters.SetPolygonBarriers now accepts an IEnumerable<Polygon> instead of IEnumerable<MapPoint>.
  • Esri.ArcGISRuntime.Tasks.NetworkAnalyst.RouteParameters.SetPolylineBarriers now accepts an IEnumerable<Polyline> instead of IEnumerable<MapPoint>.