没有合适的资源?快使用搜索试试~ 我知道了~
ArcGIS API for Silverlight开发入门.
需积分: 9 2 下载量 20 浏览量
2013-08-26
16:26:18
上传
评论
收藏 2.92MB DOC 举报
温馨提示
试读
60页
ArcGIS API for Silverlight开发入门.
资源详情
资源评论
资源推荐
第一节、为什么要用 Silverlight API?
你用上 3G 手机了吗?你可能会说,我就是喜欢用 nokia1100,ABCDEFG 跟我都没关系。
但你不能否认 3G 是一种趋势,最终我们每个人都会被包裹在 3G 网络中。1100 也不是一成
不变,没准哪天为了打击犯罪,会在你的 1100 上强制装上 GPS。GIS 工作既然建立在计算
机的基础上,当然也得随着 IT 行业与时俱进。
看看现在计算机应用的趋势吧。云(计算),这个东西可讲不清楚,因为云嘛,飘忽
不定的。不过可以这样来看它,以后计算机网络上就有一坨(或者几坨)万能的云,有什
么需求云都可以满足我们,包括各种资源或者计算工作,就不需要在自己的机器上安装任
何软件了(甚至操作系统都可以由天边那朵云来提供给你)。更具体点, SaaS(Software
as a Service),各种的网页邮件系统, google docs(一个在线的 office)都是 SaaS。收发邮件
登陆一个网页就行,而不需要在自己机器上安装一个软件。这就是计算机应用的一个趋势
把所有东西都做到网上。再来看看网上的趋势:RIA(Rich InternetApplication)。 RIA 简
单来讲就是一个网页(网络应用),在完成基本功能的同时,会让你觉得很漂亮,操作起
来很舒服,效果很炫,而不是打开后立刻就想关掉它。其实大受欢迎的开心网(各种插
件)和 twitter,甚至 QQ 空间等,都有 RIA 的身影。
好了,ArcGIS 之所以在行业领先,特点之一就是它能紧跟计算机发展的趋势。ArcGIS
Online 就是那朵天边的浮云;JavaScript API,Flex API,Siverlight API 就是 ArcGIS 自己
RIA 的三驾马车。
这里还得插一句,我觉得 ArcGIS Server 的主角本来是 ADF,通过它我们可以完成一个
无所不能的 ServerGIS。但在大多数情况下,GIS 都是作为特定的业务嵌入在一些 MIS 中的,
相比购买 ADF 这辆悍马来说,还是直接驾驭三套车跑的更轻快一些。
现在看看我们的主角。其实是 ArcGIS API forSilverlight/WPF(以下专注 Siverlight 部
分 ) , 那 么 Silverlight 和 WPF 的 关 系 如 何 呢 ? Silverlight 原 来 叫 WPF/E , E 就 是
Everywhere , 从 命 名 可 以 看 出 它 们 的 关 系 : Silverlight 是 WPF 的 一 个 子 集 。 WPF
是.NETFramework 3.0 的组成部分之一,微软视其为下一代用户界面,总之很高档就是了
(在 Vista 和 Windows7 中看到的大量与 XP 不同的界面,就是 WPF 的身影); Silverlight
可以看做是 WPF 在浏览器里的一个外挂,用于向网络用户展示自己的强大能力,由于受限
于网络环境,所以是 WPF 的一部分核心功能。Siverlight 的设计初衷是跨平台,跨浏览器
的。
如果这些还是比较抽象,那么可以造一个排比句来进一步说明。之前先肯定一点,
Flash 现在在网络中的的主导地位。开始造句。Adobe 有 Flash,微软有 Silverlight;Adobe
有 AIR,微软有 WPF;Flex 有 mxml,Silverlight 有 xaml;Adobe 有 ActionScript,微软有
Code-Behind ( C#/VB.NET ) 或 者 JavaScript ; Adobe 有 CS ( 包 括
Dreamweaver,Flash,Fireworks,Photoshop,Illustrator),微软有 ExpressionStudio(包
括 Blend,Web,Design,Media,Encoder)。现在,能够看来 Siverlight 到底是何方神圣
了吧?
最后再来说说 ArcGIS 这三驾马车(JavaScript API,Flex API,SiverlightAPI)。国外有
人说,随着 Siverlight API 的推出,与 Flex API 一起,将会使 JavaScriptAPI 慢慢退出历史舞
台,因为前两者就是为 RIA 而生的。但其实也不然,随着 Google 和 Mozilla 工程师的推进,
他们能够使
JavaScript
的执行速度提高非常多 ,Chrome 就是例子。在这种背景下,一些非
常 cool 的程序员会让古老的 JavaScript 获得重生。到底哪匹马跑得更快?别回答这种问题,
赶紧挑一匹自己的马儿,快马扬鞭吧~~
在今年的 ESRI 开发用户大会上,一阵鼓声过后,ESRI 隆重推出了 ArcGIS API for
Silverlight/WPF(beta)。接下来我将把自己在学习 Silverlight API 中的一些经历和大家分
享,与大伙共同进步。
第二节、Getting Started
这一节来对 (,下同)的开发有个总体的认识。
欲善其事先利其器。要做开发,第一步就得搭建环境。因为是在
基础上做开
发,所以先得整理好 的开发环境。 并没有内建在 中,而
是作为 的形式附加的。在这里可以找到详细的安装步骤:
说明一下,步骤 安装了 (要求有 的 补丁包);步骤 安装
的是 ! 中的 ",这个工具相当于可视化的 # 编辑器,
可以用来轻松的创建 程序的用户界面;步骤 $ 中安装的是 一种非
常华丽的图片处理效果,可以参看这里的实例;步骤 % 包括一些可用的 控件和
例子。接下来再去看看
的要求 。可以看出对于开发 程
序来说,只有步骤 是必须的,其他都是可选的。之后需要从 & 网站下载
(需要免费注册一个 &' 账户),以备后用。
总结一下最常见的安装步骤:、安装 ;、安装 ;$、安装
( !!。到此,就可进行 程序的开
发了。关于开发环境的搭建,还可以参考 )))*'
版主的帖子 。(做 的
开发不需要在自己的机器上安装 ,可直接使用 + 上的数据;
但如果要添加自己的数据,当然还是需要 了)
下面就来一个 ,- 吧,对于 来说,理所当然就是展示一张漂亮的世界地图了。
具体步骤如下:
、 中,新建 .,选择 ;
、在出现的提示框中选择 /01(-'. !
;( 程序与 2 一样,相当于网页中的一个插件。第一个选
项是将 嵌入到一个 01( 网站中,第二个选项是将 嵌入到一个
临时的 # 页面中)
$、添加 的引用:与01( 程序开发一样,(注意是在
工程上而不是 01( 工程上),找到从 & 下载的 ,选择添加
&00;
%、打开 0#,在 3 4 标签中添加一句引用,在 标签之间添加一些
代码,完成后看起来像这样:
<UserControl x:Class=”SilverlightApplication1.Page”
xmlns=”http://schemas.microsoft.com/winfx/2006/xaml/presentation”
xmlns:x=”http://schemas.microsoft.com/winfx/2006/xaml”
xmlns:esri=”clr-namespace:ESRI.ArcGIS;assembly=ESRI.ArcGIS”
Width=”400″ Height=”300″>
<Grid x:Name=”LayoutRoot” Background=”White”>
<esri:Map x:Name=”mymap”>
<esri:Map.Layers>
<esri:ArcGISTiledMapServiceLayer ID=”layerworldmap”
Url=”http://server.arcgisonline.com/ArcGIS/rest/services/ESRI_Imagery_World_2D/
MapServer” />
</esri:Map.Layers>
</esri:Map>
</Grid>
</UserControl>
5、按 65,运行程序,就完成了我们的 / 可以在浏览器中看到下面的画
面: 看到效果之后,再来对它进行理解吧。
先说下 的程序的基本背景。0# 实际上是一个控件,相当于 0
中的 !0 ,大部分的工作都在这里面完成(0# 相当于 '0 );
上面的是 #(读:78*#9)代码,是微软针对 /: 的标记语言,与
2 中的 ## 类似。 程序中所有的布局工作都是由 # 来完成的;
中, 可以实时对 # 的效果做预览,但是这个预览效果是只读的,
对于预览中的控件也不可选;为了弥补这个缺陷,可以用前面提到的 "
来可视化地设计程序界面,会自动生成对应的 # 代码,使用于复杂的布局和美化工作
(可参考 中的 ; 例子);再看 0#。! 标签(页面的
根元素)证明了 0# 实际上是一个控件类;下面的几句相当于引入了 # 的特定
命名空间,里面包括了我们的 &0;/ 和 指明了 控件本
身的尺寸,一般我们将这里的 / 和 属性去掉,已达到全屏的效果(你也可以
试试哦); 标签是布局控件,相当于 # 中的表格,可以进行灵活的页面布局,
# 中常用的布局控件还有 4 和 ;;每一个 # 的 4 都可以有
一个 <1# 属性,以便在 ' 页面中对其引用。
之后是我们的主角了。= 标签(继承自 # 的 4)相当于一个 = 控件,可以
在其中加入图层;这里我们添加了一个 (=>) 图层(在后面的
文章中会专门讲到 中的图层类型),对应使用的是 发布的
经过 的服务,作为客户端的 ,同 ? 与 6 一样,都是通过 &(
方式对资源和操作进行引用的;对这个图层,赋予了一个 属性,因为 中
的图层是从 # 中的 )+'. 继承而来,所以没有 <1# 的属性,为了
方便在 '(与 0 类似的托管代码)的代码中找到这个图层,便使用了
属性;3&> 的内容便是 + 发布好的一个世界地图资源。
到此,应该对这个例子理解的差不多了。如果还想再添加一个图层该怎么办呢?没错,就
是在 = 标签中再添加一个 ),不过要注意的是,第一个加入的图层会显示在最下面,
并且决定了整个 = 控件的空间参考信息。大家自然会想到叠加一个自己的数据图层来看
看效果,于是对 = 标签内容做了修改( 是本机发布的一个中国地图):
<esri:ArcGISDynamicMapServiceLayer ID=”chinamaplayer”
Url=”http://localhost/ArcGIS/rest/services/china/MapServer” />
运行后却还是只有世界地图一个图层(已经确保拼写、大小写正确),怎么回事呢?来用
事件帮助查找错误吧。
能够利用0 的一些核心库内容,包括事件。来对刚才的那个图层添加一个事
件:*6,当图层添加失败的时候会出发这个事件。添加这个事件的处理
也非常简单:在上面的图层中加入 *6 属性,会提示你生成新的
,默认回车,看上去像这样:
<esri:ArcGISDynamicMapServiceLayerID=”chinamaplayer”InitializationFailed=”ArcGISDyna
micMapServiceLayer_InitializationFailed”
Url=”http://localhost/ArcGIS/rest/services/china/MapServer” />
在事件上面右键单击,1,,就会进入前面所说的
' 页面(本例为 4@),添加以下代码:
private void
ArcGISDynamicMapServiceLayer_InitializationFailed(object sender,
EventArgs e)
{
ESRI.ArcGIS.Layer layer = sender as ESRI.ArcGIS.Layer;
MessageBox.Show(layer.InitializationFailure.Message);
}
然后运行程序,会得到初始化图层失败的原因:
原来,为了安全原因考虑,同 2 一样, 对跨域访问也做了严格的限制。
要解决这个问题,可以参考帮助中的说明,将两个 # 文件保存在网站根目录,比如 4<A
!'A/// 中即可(其实保存其中一个就可以了,+ 已经将两个
# 文件都放在了网站根目录中,所以我们可以引用上面的服务)。
看下最后的效果吧。
为了更好的理解 # 和 ,建议首先独立完成 帮助中的两个
/;!:/ 和 ;。
下一节将会在事件和 特性的基础上带给大家一个比较完整的地图实例。
第三节、一个基础地图实例
这节在一个地图实例的基础上,来对 中的一些基本概念做一个总体了解,
顺便熟悉一下 的开发知识。点击这里,直接看效果。
根据上一节的知识,可以知道这个 程序里包含了一个 = 控件,并且里面至
少有一个 -#) 的图层。那么 0# 里的关键代码看起来应该是这样的:
1. <Grid x:Name=”LayoutRoot”>
2. <esri:Map x:Name=”Map1″>
3. <esri:Map.Layers>
4. <esri:ArcGISTiledMapServiceLayer ID=”WorldImageLayer”
x:Name=”WorldImageLayer” Initialized=”WorldImageLayer_Initialized”
5. Url=”http://services.arcgisonline.com/ArcGIS/rest/services/ESRI_Imagery_World_2D/
MapServer” />
6. </esri:Map.Layers>
剩余59页未读,继续阅读
汪俊8
- 粉丝: 0
- 资源: 7
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- ZEND解密dezender12
- sony 索尼IMX334摄像头模组电路板AD版硬件PCB图(6层板).zip
- 基于flask和echarts融合交易策略的bitfinex可视化微服务.zip
- 包含了wvp-assist.tar wvp-talk.tar zlmediakit.tar .
- 3r4efgh53wgrf43tw
- 2024新版Java基础从入门到精通全套视频+资料下载
- Spring AI大模型视频教程+ChatGPT视频教程+OpenAI大模型视频教程(资料+视频教程)
- ABB工业机器人教程PDF版本
- 123321123323211
- 三相桥式全桥整流电路MATALB Simulink仿真文件
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
评论0