增加地图图层

1.   支持加载到地图控件中的类型:

参考:http://hi.baidu.com/%B6%C5%B1%F8%B1%F8%B1%F8/blog/item/5d6aa1135fdb231ec83d6d89.html

 

2.   图层加载顺序

a)    图层加载由下往上,因此最先加载的图层最先绘制,位于最底层,按照加载的先后顺序由下向上叠加绘制。 如图:

Layer drawing order

                                                                     

b)        第一个图层定义了图层的参考系。

 

3.      加载地图服务的方法

a)        引用ESRI.ArcGIS.Client.dll,并定义命名空间

b)        增加ArcGIS地图服务图层,本例包括瓦片服务、影像服务与动态服务

c)        定义各图层的唯一标识,即ID

d)        引用服务地址

e)        代码如下:

<esri:Mapx:Name="MyMap" >

 <esri:Map.Layers>

   <esri:ArcGISTiledMapServiceLayerID="StreetMapLayer"

     Url="http://server.arcgisonline.com/ArcGIS/rest/services/ESRI_StreetMap_World_2D/MapServer"/>

   <esri:ArcGISImageServiceLayerID="SanFranciscoImageLayer"

     Url="http://serverapps.esri.com/ArcGIS/rest/services/SamplesNET/SanFranciscoImage/MapServer"/>

   <esri:ArcGISDynamicMapServiceLayerID="CaliforniaLayer"

     Url="http://serverapps.esri.com/ArcGIS/rest/services/California/MapServer"/>

 </esri:Map.Layers>

</esri:Map>

 

说明:

    •  如果地图的访问需要用户认证,则需要通过Token属性定义令牌,关于安全服务可参考: http://help.arcgis.com/en/webapi/silverlight/help/0166/016600000022000000.htm
    • 地图的SnapToLevels属性用于设置是否仅在指定比例等级显示,默认为false,若为true,需要在瓦片图层中定义比例等级;
    • 不支持多图层的缓存;
    •  ArcGIS动态地图服务均为透明背景;
    • 使用Opacity 属性定义图层的透明度。

 

4.      使用图层范围设置地图初始化范围

一旦地图服务图层被初始化,将可获得该图层的InitialExtent与FullExtent。可在后置代码中定义地图范围。步骤如下:

a)    在XAML中增加Layer的Initialized属性,定义处理方法名(在后置代码中将创建该方法);

b)    在处理方法中,sender传递初始化图层,可以将该图层对象转换为ESRI.ArcGIS.Client.Layer抽象类,因为该类定义了FullExtent属性;

c)    通过ZoomTo或PanTo方法,设置地图的初始化范围为地图的初始化范围。

d)    代码如下:

<esri:ArcGISDynamicMapServiceLayerID="CaliforniaLayer"

 Url="http://serverapps.esri.com/ArcGIS/rest/services/California/MapServer"

 Initialized="CaliforniaLayer_Initialized"/>

privatevoid CaliforniaLayer_Initialized(object sender, EventArgs e)

{

  Layer layer = senderas Layer;

  MyMap.ZoomTo(layer.FullExtent);

}


 

5.      图层初始化失败的原因分析

图层初始化失败的原因包括:

  •  Url值不正确;
  • 地图服务无法获取;
  • 发布服务的网站没有跨域认证文件(clientaccesspolicy.xml或crossdomain.xml)
  • 地图服务要求安全认证,需要token(令牌)或凭证(credentials)。

若图层初始化失败,则不会在地图中显示。可通过InitializationFailed事件进行监听,并通过图层的InitializationFailure属性判断异常原因。步骤如下:

a)    在XAML文件中增加layer InitializationFailed属性,定义处理方法名(在后置代码中将创建该方法)

b)     在处理方法中,sender参数传递初始化失败的图层,将之转换为ESRI.ArcGIS.Client.Layer抽象类,该类定义了InitializationFailure属性;

c)    InitializationFailure即初始化异常,分析异常内容,确定原因,本例中 异常信息通过Silverlight的文本块显示。

d)    代码如下:

<esri:ArcGISDynamicMapServiceLayerID="CaliforniaLayer"

 Url="http://serverapps.esri.com/ArcGIS/rest/services/California/MapServer"

 InitializationFailed="CaliforniaLayer_InitializationFailed"/>

privatevoid CaliforniaLayer_InitializationFailed(object sender, EventArgs e)

{

  Layer layer = senderas Layer;

 stringexceptionMessage = layer.InitializationFailure.Message;

  MyTextBlock.Text = exceptionMessage;

}


 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值