作为ESRI的平台的一份子arcgis api for silverlight,自然与ESRI的其它产品有联系。上一篇我们做了一个地图浏览的程序,它的确很简单。只是有一点不大明白: <esri:ArcGISTiledMapServiceLayer ID="MyLayer" Url="
http://services.arcgisonline.com/ArcGIS/rest/services/World_Street_Map/MapServer"
/>这个是什么意思。想弄明白这个问题,我们就不得不提到图层的概念。
ArcGISTiledMapServiceLayer:是缓存图层,通过预先将地图数据切片缓存在服务器硬盘,客户端访问时服务会根据其当前访问区域计算出显示的图片返回给客户端。客户端就可以看到地图了,其实是几张图片组合起来的。
ArcGISDynamicMapServiceLayer:是动态图层,动态图层是预先没有切片的,客户端访问时服务会根据其访问的区域实时生成一张图片返回给客户端。这个明显的速度上就比不过做了缓存的图层。
所以,明显的一般作为基础数据的地图(比如上海市基础图),我们就可以把它发布成缓存地图,因为基础图一般不会变动,那么我们就预先切片缓存;而为了满足自己业务需求的专题地图(比如电力行业路灯信息等),就作为动态图层发布,以为这些信息时经常变动的,做缓存明显没有意义。
当然,这两个图层是可以叠加在一起的。也正是这样,就可以满足我们一般的地图开发功能。下面就是一段叠加的例子:
<esri:Map x:Name="MyMap" WrapAround="True">
<esri:ArcGISTiledMapServiceLayer ID="StreetMapLayer"
Url="http://services.arcgisonline.com/ArcGIS/rest/services/World_Street_Map/MapServer"
InitializationFailed="Layer_InitializationFailed" />
<esri:ArcGISDynamicMapServiceLayer ID="DynamicLayer"
Url="http://sampleserver3.arcgisonline.com/ArcGIS/rest/services/Earthquakes/RecentEarthquakesRendered/MapServer"
InitializationFailed="Layer_InitializationFailed" />
</esri:Map>
下面系统总结一下arcgis api for silverlight中图层的结构
Layer
|--TiledMapServiceLayer
| |--ArcGISTiledMapServiceLayer
|--DynamicLayer
| |--DynamicMapServiceLayer
| |--ArcGISDynamicMapServiceLayer
| |--ArcGISImageServiceLayer
| |--GPResultImageLayer
|--GraphicsLayer
| |--FeatureLayer
|--ElementLayer
1、Layer:
继承自Silverlight中的DependencyObject,并实现了INotifyPropertyChanged接口,是Silverlight API中其他图层的基类。
2、TiledMapServiceLayer:
继承自Layer,是所有使用了缓存的地图服务的基类。通过它可以在程序中加入经过缓存的,来自不同数据源的地图服务。比如ArcGIS Server的地图服务,Google Map的地图,Virtual Earth的地图等;
3、ArcGISTiledMapServiceLayer:
继承自TiledMapServiceLayer。像上面说的一样,这个图层扩展了TiledMapServiceLayer,于是支持由ArcGISServer 9.3版本发布的经过缓存的地图服务。
4、DynamicLayer:
继承自Layer,是动态地图服务的基类;
5、DynamicMapServiceLayer:
继承自DynamicLayer,对应于TiledMapServiceLayer,要使用未经过缓存的动态地图服务,就得通过扩展这个图层来实现。
6、ArcGISDynamicMapServiceLayer:
继承自DynamicMapServiceLayer,针对ArcGIS Server9.3版本发布的动态地图服务。同理,如果要在客户端API中使用其他动态地图服务,比如OGC的WMS服务,则也需要像这个图层一样,扩展上面的DynamicMapServiceLayer来实现;
7、ArcGISImageServiceLayer:
继承自DynamicMapServiceLayer,针对ArcGIS Server 9.3版本发布的ImageService,因为影像服务也属于动态的地图服务。在客户端API中,可以通过ArcGISImageServiceLayer的一些属性,方便通过浏览器来展示服务器端的影像数据,比如通过BandIds属性,可以快速调整影像数据显示波段的组合(RGB通道),提供不同结果供用户查看。点击这里http://serverapps.esri.com/javascript_examples/image_service_band_spinners.html,查看一个实例;
8、GPResultImageLayer:
继承自DynamicMapServiceLayer,针对Geoprocessing服务所产生的结果。可以请求服务器端的GP服务将结果动态生成一张图片,将此图片作为GPResultImageLayer图层直接添加到Map控件中;
9、GraphicsLayer:
继承自Layer,这个图层一般满足我们与地图交互时呈现的元素。比如拉框放大,我们能看见鼠标所画的一个矩形;又比如对兴趣点的查询,结果通常是将符合条件的兴趣点的形状高亮显示等。我们做GPS位置跟踪时,一般才用的也就是它。
10、FeatureLayer:
继承自GraphicsLayer,这也是Silverlight API中的亮点之一,通过它可以完成一个比较炫的专题图Renderer。
11、ElementLayer:
继承自Layer,它可以用来专门呈现Silverlight中原生的FrameworkElement,比如视频,音频等。虽然在FillSymbol的Fill属性中也能利用Brush类来展现一段视频,但毕竟有些“小气”,在ElementLayer中可以大大方方的放置Silverlight元素。你可能会问,在Map控件之外,Grid等布局元素中不是也能放置Silverlight的东西吗,为什么要放在ElementLayer里呢?其实有个问题经常困扰GIS开发人员,就是想让一些非地理数据元素随着地图范围的变化(放大,缩小,平移)而变化,而无须自己在Extent变化后重新计算客户端坐标,手工改变这些元素的位置。瞧,ElementLayer正解决了这个问题。
图层那么多,我们重点关注红色标记的图层,一般的GIS开发就够用了。
分享到:
相关推荐
ArcGIS API for Silverlight是Esri公司开发的一款用于构建地理信息系统(GIS)Web应用程序的开发框架,主要针对Microsoft Silverlight技术。此API使得开发者能够利用Silverlight的强大功能和丰富的用户体验来展示、...
### ArcGIS API for Silverlight 开发入门 #### 一、为何选择 Silverlight API? 随着信息技术的发展,GIS领域也需要不断地更新迭代以适应新的技术趋势。Silverlight作为一种新兴的技术平台,为GIS开发提供了新的...
ArcGIS API for Silverlight是一个强大的工具集,允许开发人员在Web浏览器内构建丰富的地理信息系统(GIS)应用,它利用了Microsoft Silverlight的技术优势来呈现地图、地理数据和服务。 该帮助文档包含以下几个...
**ArcGIS 3.1 for Silverlight** 是Esri公司推出的一款基于Silverlight技术的Web GIS开发框架。这款产品主要用于构建交互式的、丰富的地理信息系统应用,让用户能够在浏览器中享受到类似桌面应用的体验。ArcGIS API ...
**ArcGIS API for Silverlight 开发入门** ArcGIS API for Silverlight 是一款强大的地图和地理信息系统(GIS)开发工具,由Esri公司提供,用于在Microsoft Silverlight平台上构建交互式的地图应用。它允许开发者...
《ArcGIS Silverlight API 应用开发教程》是一本深入探讨使用Esri的ArcGIS Silverlight API进行地理信息系统(GIS)应用开发的专业指南。ArcGIS Silverlight API是Esri公司提供的一个强大的工具,用于构建基于...
通过以上的介绍可以看出,ArcGIS API for Silverlight 提供了一个全面而强大的开发工具包,涵盖了地图显示、交互控制、图形绘制等多个方面,极大地简化了GIS应用的开发过程。对于希望利用Silverlight快速构建高质量...
源代码中包含的示例涵盖了ArcGIS Silverlight开发的多个关键领域,如地图加载、图层操作、几何对象处理、查询与筛选、服务的动态加载等。通过对这些示例的分析,我们可以深入探讨以下几个主要知识点: 1. **地图...
#### 二、ArcGIS Silverlight/WPF API安装与配置 - **下载SDK**:首先需要从Esri官方网站下载最新的ArcGIS Silverlight/WPF SDK。当前版本为1.1(build 97)。 - **参考文档**:Esri提供了详尽的文档资源,包括概述、...
《ArcGIS SL API 3.1:银光闪烁在地理...通过提供的ArcGISAPI31forSilverlight.exe安装文件,开发者可以轻松开始他们的ArcGIS SL API 3.1开发之旅,探索这个平台无尽的可能性,构建出满足各种业务需求的地理信息应用。
《ArcGIS Silverlight VB.NET 源码解析与应用指南》 ArcGIS Silverlight是Esri公司提供的一个用于构建Web GIS应用的开发平台,它结合了Silverlight的强大图形渲染能力和ArcGIS的地理信息系统功能,为开发者提供了...
在IT行业中,ArcGIS Server是一种强大...总结,ArcGIS Server基于模板的开发大大简化了GIS应用的构建过程,通过预定义的模板和API,开发者可以快速构建功能丰富的电子地图服务和WebGIS应用,服务于各种行业和业务需求。
- 使用ArcGIS JavaScript API、ArcGIS API for Flex或ArcGIS API for Silverlight进行Web开发。 - 探索地图服务、图层服务、地理编码服务等Web服务的使用方法。 6. **第十五章:ArcGIS Server for Java** - 介绍...
### ArcGIS API for Flex 入门教程:详细解析与实践指南 #### RIA技术与ArcGIS API for Flex ##### RIA技术概览及其优势 **RIA(Rich Internet Application,富互联网应用)**是一种旨在提供类似桌面应用程序用户...
- **ArcGIS API for Microsoft Silverlight**:针对Silverlight平台的GIS开发API。 - **ArcGIS可配置Web应用程序**:预置的Web应用程序模板,便于快速部署。 - **ArcGIS Viewer for Flex**:基于Flex的GIS应用框架。...
这涉及到ArcGIS Server、ArcGIS API for JavaScript、Flex或Silverlight等技术。 2. **GIS基础概念**:介绍GIS的基本概念,如空间数据、坐标系统、图层管理、地理编码、几何对象等,这些都是构建RIA的基础。 3. **...
4. 集成ArcGIS:将Silverlight应用与ArcGIS结合,开发者可以使用ArcGIS的REST API或SOAP服务,访问地图服务、图层、地理编码、空间查询等功能。通过Silverlight的异步编程模型,可以实现流畅的用户体验,即使在处理...
4. **Web GIS应用开发**:学习使用ArcGIS API for JavaScript、Python、Flex、Silverlight等技术,构建与ArcGIS Server交互的Web应用程序。这包括添加服务、控制图层、执行查询、绘制图形、实现地理编码和地理分析等...
### 基于ArcGIS Server的JavaScript API与Flex API地图应用构建 #### 一、ArcGIS Server 开发概要 在构建地图应用时,选择合适的技术框架至关重要。本篇文章将重点介绍如何利用ArcGIS Server结合JavaScript API和...