ArcGis API for Silverlight访问ArcGis Server本机 发布的地图服务

                       ArcGIS API for Silverlight是ESRI推出的一个基于Silverlight开发 WebGis 的API,最近开始研究 WebGIS, 成功在程序里访问到本机发布的地图服务,留文一篇,以做参考!

                       首先配置开发环境。ArcGis Server (.NET版),和以前不同的是,现在ArcGIS  10 版本里, Sde, AE,AGS统一用了一个 SDK, 就是AO的SDK,所以只需安装一个SDK,再根据不同的需求选装不同的runtime。 安装Arcgis Server, VS2010, Expression Blend 4,Silverlight4开发人员版。 最后再安装ArcGis API for Silverlight V2.2.环境搭配成功!

                      在VS中 新建一个普通的Silverlight应用程序,从工具箱里添加一个Map控件,Map控件默认访问Arcgis Online上发布的地图服务                     

在xaml.cs文件夹中添加下面这个函数,VS调试。成功访问到ArcGis Online发布的地图服务。

但是当本人访问自己发布的地图服务时候,问题接踵而来。始终无法访问
 
首先这里要了解一个机制
Silverlight跨域策略:

  要从远程服务器访问数据,远程服务器需要在 web 服务器的根目录下放置一个 clientaccesspolicy.xml 文件(例如 c:\inetpub\wwwroot)。ArcGIS for Silverlight 以 Microsoft Silverlight 平台为基础进行构建。出于安全方面的原因,不允许 Web 浏览器访问位于 Silverlight 应用程序所属 Web 域之外的数据。但是,如果已从服务器授予了权限,则 Silverlight 应用程序可以跨域加载数据。如果远程服务器上放置了一个 clientaccesspolicy.xml 文件,且此文件允许 Silverlight 连接此远程服务器上的服务,则可以实现跨域加载。

clientaccesspolicy.xml

< ?xml version= "1.0"  encoding= "utf-8"  ?>
< access-policy>
  < cross-domain-access>
    < policy>
      < allow-from http-request-headers= "*">
        < domain uri= "*" />
        < domain uri= "http://*" />
      < /allow-from>
      < grant-to>
        < resource path= "/"  include-subpaths= "true" />
      < /grant-to>
    < /policy>
  < /cross-domain-access>
< /access-policy>

  crossdomain.xml

<?xml version="1.0"?>
<cross-domain-policy>
  <allow-access-from domain="*" header=”*” />
</cross-domain-policy>

这里还出了一个小乌龙,我用记事本打开粘贴这两个xml文档还出错了,后来用VS打开重粘了一遍才对。

光把这两个文件绑定到Silverlight上实现跨域访问,还不行,需要在xaml.cs后台代码中添加一个函数

这个时候再观察一遍刚才的前台代码 注释掉的是访问ArcGis online的代码,下面那句是访问本机的,注意ArcGisTiledMapServiceLayer与ArcGISDynamicMapServiceLayer的区别,具体意义大家可以看看教程。 IntializationFaild指向刚才后台添加的代码。

至此,告一段落,调试程序,成功访问
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值