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
- Assembly version is different than product version
- Support for the ArcGIS Online World Geocoding Service
- More comprehensive support for the ArcGIS Portal API
- New ArcGISWebClient class to handle web requests to ArcGIS systems
- New CsvLayer data source
- OpenStreetMapLayer supports custom OpenStreetMap tile servers
- Additional enhancements include new properties on FeatureLayerInfo, the ability to convert FeatureLayerInfo and Geometry to and from JSON, and support in IdentityManager for ArcGIS Server services federated with Portal for ArcGIS.
- Breaking changes include returning a feature collection in a web map as a GroupLayer and the removal of the Osmarender style from OpenStreetMapLayer.
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.
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:
- ESRI.ArcGIS.Client assembly comparison
- ESRI.ArcGIS.Client.Behaviors assembly (no significant changes)
- ESRI.ArcGIS.Client.Bing assembly (no significant changes)
- ESRI.ArcGIS.Client.Portal assembly comparison
- ESRI.ArcGIS.Client.Printing assembly (no significant changes)
- ESRI.ArcGIS.Client.Toolkit assembly comparison
- ESRI.ArcGIS.Client.Toolkit.DataSources assembly comparison
Resolved issues
The following issues are resolved with the 3.1 release:
- Exception is thrown when constructing a map for printing that contains a single feature layer collection containing multiple geometry types (NIM080592)
- Graphics layer disappears when zooming in (NIM079559)
- Firefox does not recognize an encoded apostrophe as part of a URL when performing a query, which causes the query to fail (NIM076274)
- Draw, DrawMode.Arrow results in geometry that is not topologically correct (NIM076337)
- With Editor, Save and Undo does not commit edits on FeatureLayer (NIM080872)
- Identify task does not return correct results from a DEM in an ArcGIS Server 10.1 map service (NIM085410)
- TimeSlider control is not enabled to end date time (NIM080638)
- PrintTask.GetServiceInfoAsync is not performed on TaskBase, concurrent operations not checked (NIM084493)
- Support wraparound and normalized geometry with Map.ZoomTo (NIM085763)
- ArgumentOutOfRangeException is thrown when graphics layer does not auto-project because of different, yet equivalent, spatial references (NIM086616)
- DrawMode.Polygon shows an unnecessary dashed outline that is visible when FillSymbol BorderThickness is < 2 (NIM074793)
- FeatureLayerInfo.TimeInfo properties (i.e., TimeExtent) are inaccessible (NIM075573)
- VisibleLayers property not respected for feature collections in web maps (NIM085933)
- GeodesicArea may be wrong when a ring is not closed or when there are multiple rings (NIM085764)
- SetSnapToEdgeEnabled method causes the application error when working with data in WGS84 (NIM085556)
- Editor.EditCompleted is not raised when Cut, Reshape, or Union command fails or does not cause an edit (NIM079471)
- ExportWebMap task fails if multiple PictureMarkerSymbols are used to render points in a graphics layer (NIM085360)
- Downloading an attached file through Attachment Editor from a token secured service prompts for credentials again (NIM078443)
- Legend control does not support a WMS service in a group layer (NIM082929)
Deprecated items
Support for Silverlight 4 is deprecated in this release. The following will be removed in the next release:
- Silverlight 4 assemblies
- Project templates for Expression Blend 4
- Integration with Silverlight 4 projects (including add reference, toolbox, etc.)
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.