arcgis api for silverlight 3.1 更新说明

前言:

查看arcgis sl api 老版本帮助的方式:http://resources.arcgis.com/en/help/silverlight-api/3.0/xxxxxxx

新版本的帮助默认不带版本号/3.0/这一节,如果要查看老版本的帮助需要再新版本的帮助的连接上增加版本号即可查看。

 

前些日子在arcgis 10.1推出后不久 sl api更新到了3.1 下面就3.1的变化进行说明:

1.支持 vs2012 ,增加vs2012项目模板

image

2.更新版本号为10.1.1 对应桌面版本,不再使用3.x的命名方式

image

3.增强Locator Class 新增了FindAsync 方法。支持 arcgis online的世界地址编码服务(http://geocode.arcgis.com)

类似Geoprocessor的GetResultMapServiceLayer方法一样,arcgis sl api 原来的异步模型都是 先提交 然后 触发完成事件  然后获取 然后触发获取完成事件

从3.0开始 部分异步替换成这种逻辑 提交 提交完成事件 获取结果 取消了原来的获取+获取完成事件的方式。FindAsync也是简化了原来的方法交互

ArcGIS Online提供了地理编码服务(http://geocode.arcgis.com),支持单线路地理编码,以及文本搜索的兴趣点,如企业和地标,根据输入位置、范围,或国家进行过滤。在API中,Locatortask已经增强,支持额外的方法,处理程序、输入和结果类型进行查找操作。服务也支持传统的地理编码,如地址转位置和位置转地址,和批量地理编码。

注意:批量编码需要ArcGIS Online的账户。

tring 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);

4.全面支持arcgis portal api(ArcGISPortalItem class)

增强了支持ArcGIS Portal API关注组织,和向门户中的项目分享信息分享信,改变门户项目的分享状态,得到用户使用的标签信息,Portal发布服务的清单助手。

使用ArcGISPortalItem.GetGroupsAsync 获取包含作为一个成员和当前用户可以访问到的门户项目的组织。使用e ArcGISPortalItem.GetSharingInfoAsyn 来获取一个项目被分享的详细信息,作为一个补充,您可以使用ArcGISPortalItem.ShareAsync和UnshareAsync来改变一个项目是如何的分享,使用ArcGISPortalUser.GetUserTagsAsync来决定什么标签被用来作为关键字,以及标签被当前用户使用多少次。

5.新的ArcGISWebClient class 用来处理 web requests

在与arcgis server通信,用来代替Microsoft System.Net.WebClient这个类,使用跟简便。例如soe情况下。

ArcGISWebClient类被用来创建和管理原始的Web请求,以优化使用ArcGISServer,ArcGIS Online,以及Portalfor ArcGIS,这个类根据Web请求的长度被用来在GET和POST请求之间切换、使用GZIP压缩下载,处理ArcGIS Server的解码错误,使用IdentityManager来访问安全的资源,禁用客户端缓存,设置代理,这个类是能够良好地与ArcGIS 资源交互,比如在ArcGISServer站点检索服务的列表,、与SOE交互,发布数据到门户。

6.新的 CsvLayer 图层 支持.csv文件

一个csv文件包含的文本用定界符来分隔作为数据,一般使用逗号,数据可以包括位置信息,比如x,y 坐标值,CsvLayer 类让添加包括地理信息的文本文件到地图上作为要素图层变的容易,一组属性可以被定义为表示数据如何存储,比如XFieldName,YFieldName,以及ColmnDelimiter,你可以选择性第限制可利用的字段源,可以使用SourcespatialReference来定义空间参考,

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

7.OpenStreetMapLayer 支持自定义的 瓦片服务

OpenStreetMap提供了一个使用许多数据提供商主机映射数据作为缓存的瓦片的标准。OpenStreetMapLayer接受用来检索瓷砖地图瓦片服务器的列表, 您可以包含一个以上瓦片服务器跨越多个站点请求传播切片请求

<esri:Map x:Name="MyMap">

  <esri:OpenStreetMapLayer ID="osmLayer">

  <esri:OpenStreetMapLayer.TileServers>

    <sys:String>http://otile1.mqcdn.com/tiles/1.0.0/osm</sys:String>

    <sys:String>http://a.tile.openstreetmap.org</sys:String>

    <sys:String>http://a.tile.opencyclemap.org/cycle</sys:String>

   </esri:OpenStreetMapLayer.TileServers>

   </esri:OpenStreetMapLayer>

</esri:Map> 

 

 

8 其他增强

  

l 新的FeatureLayerInfo属性 比如DefaultVisibility, EffectiveMaxScale, EffectiveMinScale, TimeInfo,和 TimeReference.

l 根据JSON文件来创建FeatureLayerInfo和Geometry,以及把FeatureLayerInfo 、Geometry转化为JSON格式。

l Geometry.GetResolution 提供一个方便地讲比例尺转化为分辨率的方法。

l 支持基于权限启用来允许他人查询要素服务

l IdentityManager支持ArcGIS Portal for ArcGIS以及ArcGIS Server站点的联合令牌机制。

l IdentityManager 支持原生平台验证的安全服务。

l 对Web Map支持的增强,比如一个图层的最大,最小比例尺。

l WebMap 的图层的Popup窗口的字段中,支持超链接的描述字段

 

9 变更

Web Map 要素集合作为一个GroupLayer来返回,要素集合是有Web Map中的一个或者多个图层组成的,它们可以被作为可编辑的图层创建,或者来自CSV文件,GPX文件,以及SHP文件,当一个要素集合被展现在Web Map时,ArcGIS Runtime SDK for WindowsPhone 返回要素集合作为一个GroupLayer来匹配WebMap的结构。

OpenStreetMapLayer中Osmarender风格地图被移除,在枚举OpenStreetMapLayer.MapStyle中不在有Osmarende。

 

10 废弃

  GraphicsLayer.ClearGraphiocs方法不再被公开。用GrapicsLaye.Graphics.Clear() 来完成原来的功能。

你可能感兴趣的:(silverlight)