- 1、本文档共20页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
SilverlightforArcgis开发的摸索SilverlightforArcgis开发的摸索.doc
对Silverlight forArcgis开发的摸索
环境的搭建
工欲善其事,必先利其器。要做开发,第一步就是搭建环境。因为是在Silverlight基础上做开发,所以先布置好Silverlight环境。Silverlight3.0在VS2010中是嵌入进去的,所以不要像VS2008或以前的版本那样要单独通过add-on的形式附加上去。但必须到ESRI网站下载Silverlight API(需要免费注册一个ESRI Globe账户)。但是一定要明白ESRI Silverlight API是单独封装出来的一个轻量级的Arcgis Engine运行时,作为浏览器上的解析,所以开发Silverlight for Arcgis不需要安装Arcgis桌面程序,也不需要安装Arcgis Server。使用起来非常方便,而且目前为止还是免费的。
在Silverlight承载地图流程
1、布置好开发环境后,在VS2010中先创建一个Silverlight应用程序,如下图:
添加引用,右击解决方案中的References,选择Add References,在Browse选项卡浏览到ESRI SDKs/Silverlight/v1.1下的四个核心Dll,如下图:
在MainPage.xaml主页面加入地图控件引用
xmlns:esri=clr-namespace:ESRI.ArcGIS.Client;assembly=ESRI.ArcGIS.Client
在容器面板中就可以加入地图控件和地图服务了
esri:Map x:Name=MyMap
esri:ArcGISTiledMapServiceLayer ID=MyLayer
Url=/ArcGIS/rest/services/ESRI_StreetMap_World_2D/MapServer /
/esri:Map
运行程序如下图:
看到效果之后,再来对它进行理解吧。? ?? ???先说下Silverlight的程序的基本背景。MainPage.xaml实际上是一个控件,相当于中的default.aspx,大部分的工作都在这里面完成(app.xaml相当于global.asax);上面的是xaml(读:[zeml])代码,是微软针对wpf/silverlight的标记语言,与flex中的mxml类似。Silverlight程序中所有的布局工作都是由xaml来完成的;Silverlight4中,VS2010可以实时对xaml的效果做预览,但是这个预览效果是只读的,对于预览中的控件也不可选;为了弥补这个缺陷,可以用前面提到的ExpressionBlend来可视化地设计程序界面,会自动生成对应的xaml代码,使用于复杂的布局和美化工作(可参考Silverlight中的clock例子);再看page.xaml。usercontrol标签(页面的根元素)证明了MainPage.xaml实际上是一个控件类;下面的几句相当于引入了xml的特定命名空间,里面包括了我们的ESRI.ArcGIS;width和height指明了Silverlight控件本身的尺寸,一般我们将这里的width和height属性去掉,已达到全屏的效果(你也可以试试哦);Grid标签是布局控件,相当于html中的表格,可以进行灵活的页面布局,xaml中常用的布局控件还有Canvas和StackPanel;每一个xaml的Control都可以有一个x:Name属性,以便在code-behind页面中对其引用。? ?? ???之后是我们的主角了。Map标签(继承自xaml的Control)相当于一个Map控件,可以在其中加入图层;这里我们添加了一个ArcGISTiledMapServiceLayer图层,对应使用的是ArcGIS Server发布的经过cache的服务,作为客户端的API,同JavaScript与FlexAPI一样,都是通过REST方式对资源和操作进行引用的;对这个图层,赋予了一个ID属性,因为SilverlightAPI中的图层是从xaml中的DependencyObject继承而来,所以没有x:Name的属性,为了方便在code-behind(与类似的托管代码)的代码中找到这个图层,便使用了ID属性;URL的内容便是ArcGIS Online发布好的一个世界地图资源。? ?? ???到此,应该对这个例子理解的差不多了。
Silverlight的各种工具的调用
添加一个Bookmark,由于Bookmark功能封装在ESRI.ArcGIS.Client.Toolkit.dll中所以在项目和MainPage.Xaml中添加该引用:xmlns:esriToolkit=clr-namespace:ESRI.ArcGIS.
文档评论(0)