What's new in 3.1

This topic provides an introduction to the updates and enhancements in version 3.1 (including breaking changes), the complete list of changes between 3.1 and the previously released ArcGIS API for Silverlight version 3.0, issues resolved between the 3.0 release and the 3.1 release, and a list of deprecated items.

For changes in the previous version, 3.0, see What's new in 3.0.

Updates and enhancements

The following updates and enhancements are included in 3.1:

Integration with Visual Studio 2012 suite of products

Standard and Showcase templates, controls, and assembly references are integrated with Visual Studio 2012, Visual Studio Express 2012 for Web, and Blend + Sketchflow Preview for Visual Studio. Prior editions of Visual Studio 2010 and Expression Blend are still supported.

Assembly version is different than product version

In version 3.1 of the ArcGIS API for Silverlight product, the assemblies are version 10.1.1.0 (Build 142). To maintain parity with other ArcGIS Web APIs (Flex and JavaScript), the product retained a 3.x version. However, the ArcGIS API for Silverlight shares a great deal of logic with the ArcGIS Runtime SDKs for WPF and Windows Phone, both of which are version 10.1.1. The assembly version number of the ArcGIS API for Silverlight is aligned with the version numbers of these ArcGIS Runtime SDKs to signify the technical relationship between all three platforms.

Support for the ArcGIS Online World Geocoding Service

ArcGIS Online provides a World Geocoding Service (http://geocode.arcgis.com) that supports single line geocoding, as well as text search for points of interest, such as businesses and landmarks, filtered by proximity to an input location, extent, or country. In the API, the Locator task has been enhanced to support the Find operation with an additional method, handlers, input, and result types. The service also supports traditional geocoding, such as address to location and location to address, and batch geocoding.

NoteNote:

Batch geocoding requires an ArcGIS Online account.

The following code sample shows using the Locator.FindAsync method to search for businesses named "Walmart," prioritizing based on the center of the map. Results include a host of information, such as distance to the point of interest from the search location, and type of location, such as "Department Store" or "Pharmacy."

string locatorUrl = "http://geocode.arcgis.com/arcgis/rest/services/World/GeocodeServer";

Locator locatorTask = new Locator(locatorUrl);
locatorTask.FindCompleted += (s, e) =>
{
    LocatorFindResult locatorFindResult = e.Result;
    foreach (Location location in locatorFindResult.Locations)
    {
        // add to graphics/table
    }
};

LocatorFindParameters locatorFindParams = new LocatorFindParameters()
{
    Text = "Walmart",
    Location = MyMap.Extent.GetCenter(),
    Distance = MyMap.Extent.Width / 2,
    MaxLocations = 5,
    OutSpatialReference = MyMap.SpatialReference
};

locatorFindParams.OutFields.AddRange(
    new string[]{"Score", "Distance", "Type", "Rank"});

locatorTask.FindAsync(locatorFindParams);

More comprehensive support for the ArcGIS Portal API

Enhancements to support of the ArcGIS Portal API focus on group and sharing information for portal items, changing the sharing status of portal items, getting information about the use of tags by a user, and listing helper services published by a portal.

Use ArcGISPortalItem.GetGroupsAsync to get the groups that contain a portal item as a member and that the current user can access. Use ArcGISPortalItem.GetSharingInfoAsync to get details on how an item is shared. As a complement, you can use ArcGISPortalItem.ShareAsync and UnshareAsync to change how an item is shared. Use ArcGISPortalUser.GetUserTagsAsync to determine what tags are used as keywords and how many times tags are used by the current user.

New ArcGISWebClient class to handle web requests to ArcGIS systems

The ArcGISWebClient class is used to create and manage raw web requests, optimized for use with ArcGIS for Server, ArcGIS Online, and Portal for ArcGIS. The class is built to switch between GET and POST depending on the length of a request, use GZIP to streamline downloads, handle decode errors from ArcGIS Server, use IdentityManager to access secure resources, disable client caching, or set a proxy URL. This class is ideal for communicating with ArcGIS resources not explicitly available in the API, such as retrieving a list of services on an ArcGIS Server site, communicating with an SOE, or publishing data to a portal.

New CsvLayer data source

A .csv file contains text as data separated by a delimiter, often a comma. The data can include location information, such as x and y coordinate values. The CsvLayer class makes it easy to add text files that contain coordinate information as graphics layer in a map. A set of properties can be defined to represent how the data is stored, such as XFieldName, YFieldName, and ColumnDelimiter. You can optionally limit the available SourceFields, or define the spatial reference using SourceSpatialReference. In the following XAML example, the CsvLayer references a .csv file hosted by the USGS. A renderer is required to view the layer in the map. An optional MapTip is configured to display the value of the Magnitude field in the .csv file for each feature.

<esri:CsvLayer
    Url="http://earthquake.usgs.gov/earthquakes/feed/csv/1.0/hour"
    Renderer="{StaticResource MySimpleRenderer}">
    <esri:CsvLayer.MapTip>
        <TextBlock Text="{Binding [Magnitude]}" /> 
    </esri:CsvLayer.MapTip>
</esri:CsvLayer>

OpenStreetMapLayer supports custom OpenStreetMap tile servers

OpenStreetMap provides a standard used by many data providers to host map data as cached tiles. The OpenStreetMapLayer class now accepts a list of tile servers from which to retrieve map tiles. You can include more than one tile server to spread tile requests across multiple sites. In the following example, an OpenStreetMapLayer references a set of MapQuest-OSM tile servers:

<esri:OpenStreetMapLayer>
    <esri:OpenStreetMapLayer.TileServers>
        <sys:String>http://otile1.mqcdn.com/tiles/1.0.0/osm</sys:String>
        <sys:String>http://otile2.mqcdn.com/tiles/1.0.0/osm</sys:String>
        <sys:String>http://otile3.mqcdn.com/tiles/1.0.0/osm</sys:String>
    </esri:OpenStreetMapLayer.TileServers>
</esri:OpenStreetMapLayer>

Additional enhancements

The following are additional enhancements in 3.1:

  • Return new FeatureLayerInfo properties such as DefaultVisibility, EffectiveMaxScale, EffectiveMinScale, TimeInfo, and TimeReference.
  • Create FeatureLayerInfo or Geometry from JSON and convert to JSON.
  • Geometry.GetResolution provides a convenient method to convert scale to resolution.
  • FeatureDataGrid.GetGraphicFromRow returns a Graphic from a row in a FeatureDataGrid.
  • Support for allowing others to query (view) features in a feature service with ownership based access enabled.
  • IdentityManager supports federating a token secured ArcGIS for Server site with Portal for ArcGIS.
  • Support for new web map enhancements, such as minimum and maximum scale on a layer.
  • Support for hyperlinks in the description field of a pop-up window for a layer in a web map.
  • Support for additional languages: Danish, Hebrew, Lithuanian, and Portugal Portuguese.

Breaking changes

The following are breaking changes in 3.1:

  • Web map feature collection returned as a GroupLayer—Feature collections are composed of one or more feature layers in a web map. They can be created as editable layers or generated from CSV files, GPX files, and shapefiles. When a feature collection is present in a web map, ArcGIS API for Silverlight returns it as a GroupLayer to match their structure in the web map.
  • Osmarender style removed from OpenStreetMapLayer—The Osmarender map style is no longer supported and has been removed from the OpenStreetMapLayer.MapStyle enumeration.

Complete list of changes

For a complete list of changes in the API between versions 3.0 and 3.1, see the following assembly comparisons:

Resolved issues

The following issues are resolved with the 3.1 release:

Deprecated items

Support for Silverlight 4 is deprecated in this release. The following will be removed in the next release:

The GraphicsLayer.ClearGraphics method is no longer browseable and will be removed. Instead call the Clear method on a graphics layer's graphics collection (GraphicsLayer.Graphics.Clear()). The Clear method offers a more reliable and consistent method for removing all graphics from a graphics collection.

6/23/2013