ArcGIS+API+for+Silverlight开发入门
ArcgisAPIforsiliverlight设计与开发复习纲要
ArcgisAPIforsiliverlight设计与开发复习纲要《GIS设计与开发》复习纲要一、GIS相关开发技术1.1Desktop GIS、Mobile GIS与WebGIS开发技术Desktop GIS:(单机版)桌面地理信息系统可理解为是运行于较低硬件性能指标上的较为大众化、普及化的地理信息系统。
Mobile GIS:(移动GIS)是以移动互联网为支撑、以智能手机或平板电脑为终端、结合北斗、GPS或基站为定位手段的GIS系统。
WebGIS:(网络地理信息系统)指基于Internet平台,客户端应用软件采用网络协议,运用在Internet上的地理信息系统。
1.2ESRI系列的WebGIS开发技术1.2.1ArcGIS API 系列(API:客户端接口)ArcGIS API for Javascript、ArcGIS API for Flex、ArcGIS API for SiliverLight ArcGIS API for Silverlight通过REST接口访问ArcGIS Server发布的地图服务、影像服务、几何服务、地理处理服务、要素服务、网络服务等,还可以访问OGC标准的WMS、WFS、WCS等服务,也可以访问Bing地图服务。
1.2.2ArcGIS Server服务端Url:http://localhost/ArcGIS/rest/servicesMap Service:提供动态的,或经过缓存处理的2D地图服务。
Image Service:提供对栅格、影像数据的访问服务。
Globe Service:提供3D球体服务。
Geocode Service:提供地址与地理位置查询服务Geodata Service:提供对Geodatabase的访问、查询、更新和管理服务。
Geoprocessing Service:提供空间分析和地理处理服务。
Geometry Service:提供对几何图形的操作。
ArcGIS API for Silverlight地图保存为PDF和图片
ArcGIS API for Silverlight地图保存为PDF和图片在使用ArcGIS API for Silverlight进行地图展示应用的时候,在客户端经常需要将地图保存为PDF或图片(png/jpg等)。
在做保存的时候实际上都是将地图写入到位图像素中,然后在保存为PDF或图片。
这样在Silverlight 的SDK中,提供了一个叫WritableBitmapImage的对象,使用该对象,可以很方便地把我们应用程序中的UIElement渲染到该位图对象上,并提供读取该对象所包含像素的接口。
一、保存为PDF文档在保存为PDF文档的时候需要第三方的类库文件“silverPDF”,silverPDF是Silverlight库,它使开发人员能够在客户端上创建PDF文件更加容易。
silverPDF 是基于两个开源的项目:PdfSharp()和iTextSharp()。
下载这个类库文件,然后加入到Silverlight项目工程的引用中,这样就可以使用“PdfSharp.Pdf”和“PdfSharp.Drawing”这两个命名空间,在VS项目中就可以使用,如下代码:PdfDocument document = new PdfDocument();PdfPage page = document.AddPage();XImage img = XImage.FromStream(_stream);if (img.PointWidth > img.PointHeight)page.Orientation = ndscape;elsepage.Orientation = PdfSharp.PageOrientation.Portrait;document.Pages[0].Width = XUnit.FromPoint(img.PointWidth);document.Pages[0].Height = XUnit.FromPoint(img.PointHeight);XGraphics gfx = XGraphics.FromPdfPage(page);gfx.DrawImage(img, 0, 0, img.PointWidth, img.PointHeight);document.Save(_streamOutPDF);document.Close();document = null;_stream.Close();_stream = null;_streamOutPDF = null;private void SaveMapToPDF_Click(object sender, RoutedEventArgs e){SaveFileDialog saveFileDialog = new SaveFileDialog();saveFileDialog.Filter = "PDF file format|*.pdf";saveFileDialog.DefaultExt = ".pdf";if (saveFileDialog.ShowDialog() == true){Stream pdfstream = saveFileDialog.OpenFile();try{PDFExporterControls.PDFExporter pdfExporter = newPDFExporterControls.PDFExporter();//pdfExporter.SetParent();pdfExporter.SetOutputStream(pdfstream);pdfExporter.SetMap(myMap);pdfExporter.DoExport();//MessageBox.Show(string.Format("PDF is exported and saved in: {0}", saveFileDialog.SafeFileName));}catch (Exception ex){MessageBox.Show(string.Format("Error creating PDF document: {0}", ex.Message));}}}通过silverPDF将地图保存为PDF文档,如下图:下载silverPdf类库文件:/以及源码文件:/Downloads.ashx二、保存为图片大致的使用过程如下:1、添加两个辅助类EditableImage和PngEncoder,详细见附件里的代码2、在截取事件里创建WritableBitmapImage,这里只需要把ArcGIS的Map控件对象传入即可,如果需要对生成的图片进行放大或平移,可以创建一个Transform对象,并传给构建方法的第二个参数。
实验2 ArcGIS API for Silverlight开发入门
ArcGIS API for JavaScript
ArcGIS API for Flex
ArcGIS API for Microsoft Silverlight/WPF
这三种 API 具有类似的功能,但分别针对不同的开发语言
1. 构建开发环境
(1)安装Visual Studio 2010+ Visual Studio 2010 SP1
下载地址:/zh-cn/download/details.aspx?id=24036
安装ArcGIS API for Silverlight V2.4
下载ArcGIS API for Microsoft Silverlight/WPF ,需要注册一个 ESRI Gloab 账户。 下载地址:/2010/0917/630.html
下载地址 :/express/Downloads/
(2) 安装Silverlight Tools 4 for Visual Studio 2010(add-on)
下载地址:/zh-cn/download/details.aspx?id=18149
实验2 ArcGIS API for Silverlight开发入门
王杰 wangjie09@ 安徽大学资源与环境工程学院
ArcGIS Web API 简介
Web GIS 框架有助于初步了解基于 GIS 的 Web 应用程序。通过 ArcGIS Web API,Web 浏览器可以与 ArcGIS Server GIS 服务进行通信、 渲染(绘制)地理数据并执行分析。ArcGIS Web API 具有三种不同形式。 分别是:
2. 发布一张世界地图
(1)打开Visual Studio 2010 ,新建一个Silverlight工程,命名为 Helloworld。
ArcGIS RIA开发讲座 for silverlight API SH
DynamicMapServiceLayer
GPResultImageLayer ArcGISImageServiceLayer
Siverlight API开发—— Map&Layer
注意事项:
1、地图显示的顺序依照加载的先后顺序; 2、地图服务启用了安全策略,需要获取token,并添加到图层的token属性; 3、SnapToLevels属性,决定是否按照Tile的比例尺显示; 4、第一个ArcGISTiledMapServiceLayer的信息被用来定义比例尺级别; 5、Multi-layer caches不支持; 6、ArcGISDynamicMapServiceLayer的背景色总是透明; 7、可以通过ZoomDuration(1.5 1.5)&PanDuration(0.75) 1.5 控制动画的时间;
ArcGIS Silverlight API 特色
天然具备跨平台、跨浏览器特性 耳目一新的用户体验: 地图支持弹簧动画,控制动画时间,改变用户体验 支持媒体要素随地图缩放 支持媒体要素作为地图符号,自定义符号样式更丰富 地图符号本身支持Silverlight的VisualState和动画效果,地 图上的动态要素表现更逼真 支持要素按簇显示,极大的提高了要素过多引起的渲染速度过慢 的问题 提供了直接访问 Bing服务的API,访问 Bing 地图服务更加容易。
url—必须指定Map Service图层的地址 where—定义查询条件 FeatureSymbol—用于所有的Graphics Clusterer—要素点按簇显示 OutFileds—指定返回的字段
TileLayer——Bing Layer ElementLayer——Silverlight UI/Media
silverlight开发实例讲解
Silverlight API学习笔记
Silverlight API学习笔记(一)上一篇/ 下一篇 2010-06-08 13:03:57 / 个人分类:ArcGIS Server查看( 439 ) / 评论( 4 ) / 评分( 0 / 0 )ArcGIS Silverlight API安装资源下载ArcGIS Silverlight API的帮助是在线的,访问的URL为:/en/webapi/silverlight/help/index.html关于如何搭建应用开发环境,可以参照左边的目录树中的Installation,其中包含各种开发资源的下载链接。
在系列教程的第一讲中,我先将本Help中提到的相关资源全部下载整理了一下,放在QQ空间的中转站中。
QQ帐号是:arcgiser@密码是:giser1234567,大家登录QQ邮箱后,直接在文件中转站中可以看到下载链接。
因为这个资源是开放给GISer方便学习用的,请不要随便更改QQ密码。
文件默认的存放时间为7天,如果有人看到即将过期,请帮忙续期一下。
(VS2010实在太大了,就不上传了,大家自己找下载地址吧)这个资源主要包含以下几个,简要介绍如下:(1)Expression Blend 4RC:Expression Blend,是一款用于设计桌面和Web应用用户界面的可视化工具,用户可以通过拖拉控件方式创建用户交互界面,即Expression Blend是一款Silverlight API编程的IDE。
Expression Blend 4RC是4.0 Release Candidate版本。
(2)Silverlight4_Tools如果您是在VS2010中进行ArcGIS Silverlight API开发的话,必须在安装完VS2010之后再安装Silverlight4_tools (/downloads/details.aspx?familyid=BF5AB940-C011-4BD1-AD98-DA 671E491009&displaylang=en)。
ArcGIS开发模式silverlight
搭建开发环境
1、安装VS2008 SP1 或者Visual Web Developer Express SP1 2、安装Microsoft® Silverlight™ Tools for Visual Studio 2008 SP1 选择安装Silverlight ToolKit (/Silverlight); 3、下载API library;
/arcgisserver/apis/silverlight/
4、在Web Server根目录下添加跨域访问协议; 对于ArcGIS Server .net 添加到C:\Inetpub\wwwroot; 对于ArcGIS Server Java添加到<ArcGIS>\java\web_output;
主要内容:高级进阶
• Silverlight 基础
– Microsoft Silverlight 概述 – 理解XAML – 资源字典 – 自定义控件外观 – 数据绑定 – Silverlight网络和通信
• Silverlight API开发进阶
– 客户化控件外观 – 绘制专题图 – 自定义图层
Silverlight官方网站 / Silverlight开源站点 /Silverlight MSDN Silverlight 帮助 /zh-cn/library/cc838158(VS.95).aspx
openSUSE 11.0
是
通过Moonlight 插件,Linux 用户可以浏览Silverlight内容和 使用Silverlight应用
2009年7月 Siverlight 3.0正式发布
• 支持高清媒体
/media/experiencesmoothstreaming
ArcGIS+API+for+Silverlight开发入门
先说下 Silverlight 的程序的基本背景。page.xaml 实际上是一个控件,相当于 中 的 default.aspx,大部分的工作都在这里面完成(app.xaml 相当于 global.asax);上面 的是 xaml(读:[ig`zeml])代码,是微软针对 wpf/silverlight 的标记语言,与 flex 中 的 mxml 类似。Silverlight 程序中所有的布局工作都是由 xaml 来完成的;Silverlight2
第一节、为什么要用 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#/) 或者 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
Silverlight入门基础
Silverlight入门教程--基于运行环境示例郑健2008-3-9(一).概述 (3)(二). 代码示例 (3)1).基础知识示例 (3)1. 对象的定位 (3)2. 使用SilverLight插件 (8)3. SilverLight元素的鼠标事件 (10)4. SilverLight元素的键盘事件 (16)5.方法createFromXaml使用示例 (17)6.访问和修改Silverlight元素以及属性 (19)7. Silverlight中的字体使用 (21)8.全屏支持功能 (24)9. Silverlight Downloader 对象使用 (26)10.定时器功能 (29)11.错误处理支持 (31)12.把xaml段内置在aspx或html页面中 (34)2).制作图形示例 (36)13.基本图形形状示例 (36)14.画刷对象的使用 (38)15.视频刷对象的使用 (41)16.Path元素使用 (43)17.变换效果(Transform) (44)3).多媒体功能 (46)18.在线电影播放 (46)4).制作动画效果示例 (51)19.一个动画示例 (51)20.动画的交互控制 (53)21.动画关键帧示例 (55)(一).概述Silverlight是一个跨浏览器的、跨操作系统平台的插件,为Web带来下一代媒体体验和丰富的交互式应用程序体验. 使用JS实现Ajax技术可以使网站具有很好的用户体验, 但它也会使网站过于庞大和臃肿. 业余时间学习了一下微软的Silverlight官方教程, 在学习时顺便根据学习示例整理了一个教程. 此教程包括一些精简的小例子, 主要针对开发使用场景展开示例, 在实际开发中也可以作为查找手册使用. 运行环境为VS 2005, 这些示例比较简单很容易看懂, 因此示例没有太多注释.(二). 代码示例1).基础知识示例1. 对象的定位通过呈现几个Silverlight元素来示例对象之间的定位, 以及在一个页面中创建装载多个Silverlight对象.2. 使用SilverLight插件3. SilverLight元素的鼠标事件I.鼠标滑入和滑出事件II.鼠标点击(按下/弹起)和移动事件4. SilverLight元素的键盘事件5.方法createFromXaml使用示例6.访问和修改Silverlight元素以及属性7. Silverlight中的字体使用8.全屏支持功能9. Silverlight Downloader 对象使用10.定时器功能11.错误处理支持12.把xaml段内置在aspx或html页面中这样的话就不用单独的 *.xaml 文件来承载SilverLight对象控件元素内容.2).制作图形示例13.基本图形形状示例14.画刷对象的使用15.视频刷对象的使用16.Path元素使用17.变换效果(Transform)3).多媒体功能18.在线电影播放。
arcgis api for silverlight 开发
ArcGISDynamicMapServiceLayer
Demo:HeatMapLayer、WebMap
HeatMapLayer
gradient
HeatMapPoi nts
Heatmaplayer
Intensity
Opacity
加载WebMap
引入 Esri.ArcGIS.Client.Portal.DLL. using ESRI.ArcGIS.Client.WebMap;
1.2
Standard和Showcase模板整合到VS
2009.7
1.0
Silverlight3+VS2019
API功能概述
加载地图 客户端Mashup
基本功能 图形绘制以及符号渲染
地理定位 查询检索
地理处理 网络分析
特色功能 在线编辑
影像服务 时态
2 .API 介绍
Client Bing Printing Tookit DataSource Portal Behavior
GraphicsLayer 与 FeatureLayer
Render
Cluster
GraphicsLayer
GraphicsSource
Outfields
GraphicsLayer 的所有属性
FeatureLayer
Mode
Graphics
Maptip
Url
Where
Graphics
鼠标事件
Geometr y
动态的符号 视频Biblioteka 号LineSymbol SimpleLineSymbol
CartographicLineSymbol
手动绘制-Draw
ArcGIS与Microsoft SilverlightWPF API集成开发概述
Viewer能力可以被扩展 1. T ools -> 客户化功能 2. Behaviors -> 用以客户化非UI逻辑 3. Layouts -> 客户化应用的“外观和体验” 4. Layers -> 客户化数据层类型
•
Viewer功能亮点
•
Application builder – 交互性WYSIWYG UE
•
• •
ArcGIS API for Silverlight ArcGIS API for WPF ArcGIS API for Windows Phone
•
最终版本会在2011年6月发布
V2.2中的新特性
•
WGS 84和Web Mercator空间参考,地图支持以环绕模式 连续漫游——WrapAround
•
最终
•
目标:2011年7月(美国用户大会)
Demo2:开始创建Silverlight地图应用
• Resource
•
Center
Interactive SDK • Documentation • Samples • CodePlex
•
构建第一个应用
• •
一个简单的应用 客户化模板
新劢向
•
V2.2目前已经发布
ArcGIS与Microsoft Silverlight WPF API 集成开发概述
主要内容
•
•
总览
构建应用
–可配置的Viewer –开始构建第一个Silverlight
用
地图应
•
新劢向
ArcGIS 10 —— 完整的系统
更容易 更给力 无处不在 Web
云
移劢设备
ArcGISViewerforMicrosoftSilverlight的应用与扩展开发刘姗
使用Blend进行创建 修改模板里的Layout 更改Xaml文件
•
放置xaml文件在<install directory>\Builder\Templates\Default\Config\Layouts. 选择性的,放置同名的png文件在同位置
• •
修改配置文件 Demo内容:实现自定义Layout,添加add-ins
基于ArcGIS API for Silverlight 2.2
Application Builder
•
交互地创建web应用程序
-
Map content Tools Look and fell
-
•
快速部署
Extensibility Kits
•
Viewer功能通过add-in实现
Add-ins——模块化代码
-
如果是动态服务
-
图层不可选
-
可见性可控制
-
示例URL: http://<ServerName>/arcgis/rest/services/Californis/Mapserver
图层类型
•
Layers within ArcGIS Server Dynamic Map Services
-
接收的是图层信息,以Graphics在客户端渲染
更多资源请访问:/community /en/webapps/silverlightviewer/help
•
GeoRSS feeds:包含坐标信息和属性信息的xml
-
示例Url:/earthquakes/catalogs/eqs7day-M5.xml
Demo: Explore Application Builder
API Silverlight
搭建第一个应用程序
8. 编译开网络再试将提示加载图层失败,如下图所示 :
作业:
根据本地南师大数字地图,开发制作silverlight版网络 地图,要求程序至少具有的功能:放大缩小,测量, 查询和图层控制功能。
搭建第一个应用程序
3. 在 Silverlight 工程引用中 添加对 ArcGIS Silverlight API 类库的引用;
搭建第一个应用程序
4. 在标记代码中(.xaml 文件)添加对“命名空间”的引用;
<UserControl x:Class="HelloWorld.MainPage" xmlns="/winfx/2006/xaml/presentation" xmlns:x="/winfx/2006/xaml" xmlns:d="/expression/blend/2008" xmlns:mc="/markup-compatibility/2006" xmlns:esri ="/arcgis/client/2009" mc:Ignorable="d" d:DesignHeight="300" d:DesignWidth="400"> <Grid x:Name="LayoutRoot" Background="White"> </Grid> </UserControl>
跨平台、跨浏览器,部署简便
支持 IE、Firefox、Opera、Safari、Chrome 等浏览器 支持 Windows、MacOS、Linux 以及 Windows Mobile、Symbian 等系统 插件小巧、安装方便快捷 支持浏览器外运行应用程序
ArcGIS API for Silverlight 应用开发
OverviewMap
Navigation MagnifyingGlass Magnifier InfoWindow EditorWidget AttachmentEditor FeatureDataForm FeatureDataGrid TimeSlider
13:40
开发进阶-图形绘制之Graphic
Graphic对象表示可以在GraphicsLayer
上绘制的图形要素,同时FeatureLayer
Attributes Geometry Selected Symbol 成员 说明 中的要素、几何服务操作的参数等大多以 获取或设置要素的图形几何体。 Graphic 对象来表示。 MapTip 获取或设置当鼠标悬停在要素上方时显示的地图提示。 要素的属性字典(key-value,key是属性名称,value是属性值)。
Draw是绘图工具,主要用于在地图上绘
DrawMode 制 Graphic。获取或设置绘图工具的绘制模式。
FillSymbol 属性 说明 获取或设置绘制面状图形(多边形、矩形)时使用的符号。
IsEnabled
LineSymbol
获取或设置一个值指示绘图工具是否可用。
获取或设置绘制线状图形时使用的符号。
说明
QueryTask IdentifyTask
QueryTask
FindTask
ImageServiceIdentifyTask ImageServiceIdentifyTask 点击影像数据,识别影像属性。
GeometryService
提供几何运算操作,如:缓冲区计算、距离/长度/面积计算、自动闭 合、凸多边形、裁剪、加密、求差、概化、相交、偏移、重塑图形、 截断/延伸、组合等。 提供路径分析、临近设施分析、服务区域分析等功能。 提供地址定位功能。 提供运行地理处理服务(ArcGIS Server发布的GPServer)的功能。
ArcGIS API for Silverlight学习总结
ArcGIS API for Microsoft Silverlight/WPF学习总结一、Layers的种类1、layer,指一个地图服务,相当于一个mxd文件,有ArcGISTiledMapServiceLayer,ArcGISDynamicMapServiceLayer,ArcGISImageServiceLayer三种类型,分别代表cached map service(已经生成地图缓存的map service)、non-cached map service(动态图层)和map imagery layer(影像图层)。
2、Sublayer,指代广义上的图层(lyr),相当于每个服务(mxd文件)中的一个图层二、Listbox结构1、设置ListBox的底色,边框,文字排版,位置等。
<Border Background>2、设置ListBox的名称,数据源(MyMap的layers),绑定MyMap的Layers。
<ListBox x:Name="MyList" ItemsSource="{Binding ElementName=MyMap,Path=Layers}">3、Listbox中的排版模式<StackPanel Orientation="Horizontal"> 排版方向,横向(即下面的checkbox,Slider,TextBlock横向排列)4、图层控件4.1 显示选择框<CheckBox IsChecked="{Binding Visible, Mode=TwoWay}" />4.2 透明度调节滑动器<Slider Margin="-5,0,0,0" Minimum="0" Maximum="1" Width="30"Value="{Binding Opacity, Mode=TwoWay}" Height="18" />4.3 图层名字显示<TextBlock Text="{Binding ID, Mode=OneWay}" Margin="5,0,0,0" >4.4 以CheckBox为例,解释绑定模式:<CheckBox IsChecked="{Binding Visible, Mode=TwoWay}" />绑定模式解释如下:5、设置Tooltip on hover,当鼠标放到layerlist上的图层名称上时,显示内容<ToolTipService.ToolTip>。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
中,VS2008 可以实时对 xaml 的效果做预览,但是这个预览效果是只读的,对于预览中的控 件也不可选; 为了弥补这个缺陷, 可以用前面提到的 ExpressionBlend 来可视化地设计程序 界面,会自动生成对应的 xaml 代码,使用于复杂的布局和美化工作(可参考 Silverlight 中的 clock 例子);再看 page.xaml。usercontrol 标签(页面的根元素)证明了 page.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 图层(在后面的文章中会 专门讲到 SilverlightAPI 中的图层类型) , 对应使用的是 ArcGIS Server 发布的经过 cache 的服务,作为客户端的 API,同 JavaScript 与 FlexAPI 一样,都是通过 REST 方式对资源和 操作进行引用的;对这个图层,赋予了一个 ID 属性,因为 SilverlightAPI 中的图层是从 xaml 中的 DependencyObject 继承而来, 所以没有 x:Name 的属性, 为了方便在 code-behind (与 类似的托管代码)的代码中找到这个图层,便使用了 ID 属性;URL 的内容便 是 ArcGIS Online 发布好的一个世界地图资源。 到此,应该对这个例子理解的差不多了。如果还想再添加一个图层该怎么办呢?没错,就是 在 Map 标签中再添加一个 layer,不过要注意的是,第一个加入的图层会显示在最下面,并 且决定了整个 Map 控件的空间参考信息。 大家自然会想到叠加一个自己的数据图层来看看效 果,于是对 Map 标签内容做了修改(china 是本机发布的一个中国地图): <esri:ArcGISDynamicMapServiceLayer ID=”chinamaplayer” Url=”http://localhost/ArcGIS/rest/services/china/MapServer” /> 运行后却还是只有世界地图一个图层(已经确保拼写、大小写正确),怎么回事呢?来用事 件帮助查找错误吧。 Silverlight 能够利用.net 的一些核心库内容, 包括事件。 来对刚才的那个图层添加一个事 件:InitializationFailed,当图层添加失败的时候会出发这个事件。添加这个事件的处理 也非常简单:在上面的图层中加入 InitializationFailed 属性,会提示你生成新的 eventhandler,默认回车,看上去像这样: <esri:ArcGISDynamicMapServiceLayerID=”chinamaplayer”InitializationFailed=”ArcGISDyna micMapServiceLayer_InitializationFailed” Url=”http://localhost/ArcGIS/rest/services/china/MapServer” /> 在事件上面右键单击,Navigate to Event Handler,就会进入前面所说的 code-behind 页 面(本例为 C#),添加以下代码: private void ArcGISDynamicMapServiceLayer_InitializationFailed(object sender, EventArgs e) { yer layer = sender as yer; MessageBox.Show(layer.InitializationFailure.Message); }
第一节、为什么要用 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 的 一部分核心功能。Siverlight 的设计初衷是跨平台,跨浏览器的。 如果这些还是比较抽象, 那么可以造一个排比句来进一步说明。 之前先肯定一点, Flash 现在在网络中的的主导地位。开始造句。Adobe 有 Flash,微软有 Silverlight;Adobe 有 AIR, 微软有 WPF; Flex 有 mxml , Silverlight 有 xaml; Adobe 有 ActionScript, 微软有 Code-Behind (C#/) 或者 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
3、添加 Silverlight API 的引用:与.NET 程序开发一样,add reference(注意是在 Silverlight 工程上而不是 工程上),找到从 ESRI 下载的 API,选择添加 ESRI.ArcGIS.dll; 4、 打开 Page.xaml, 在 UserControl 标签中添加一句引用, 在 Grid 标签之间添加一些代码, 完成后看起来像这样: <UserControl x:Class=”SilverlightApplication1.Page” xmlns=”/winfx/2006/xaml/presentation” xmlns:x=”/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:yers> <esri:ArcGISTiledMapServiceLayer ID=”layerworldmap” Url=”/ArcGIS/rest/services/ESRI_Imagery_World_2D/Map Server” /> </esri:yers> </esri:Map> </Grid> </UserControl> 5、按 F5,运行程序,就完成了我们的 hello world in GIS 可以在浏览器中看到下面的画 面: 看到效果之后,再来对它进行理解吧。