在用SilverlightAPI开发的过程中,不论是
从客户端提交到服务器端的数据,还是从服务器端返回客户端的数据,都要表现在浏览器中,具体的来说是Map控件里。但根据各自类型的不同,比如数据源,地图服务的类型,是否缓存等,决定了它们将处于某个图层里,前面讲过的GraphicsLayer就是一种图层。清楚地认识这些图层类型,对于处理于服务器与客户端之
间的地图数据来说是很重要的。
所有的图层都是从Layer类型继承而来的,
可以参考下载的API中的对象模型图。
Layer
|--TiledMap
serviceLayer
| |--ArcGISTiledMap
serviceLayer
|--DynamicLayer
| |--DynamicMap
serviceLayer
| |--ArcGISDynamicMap
serviceLayer
| |--ArcGISImage
serviceLayer
| |--GPResultImageLayer
|--GraphicsLayer
| |--FeatureLayer
|--ElementLayer
下面就按顺序认识一下这些图层吧,也
包括Silverlight API中独有的FeatureLayer。
1、Layer:
继承自Silverlight中的DependencyOb
ject,并实现了INotifyPropertyChanged接口,是Silverlight API中其他图层的基类。可以把它看成麦子,再好吃的凉皮,泡馍都是由它做出来的;
2、TiledMap
serviceLayer:
继承自Layer,是所有使用了缓存的地图服务的基类。通过它可以
在程序中加入经过缓存的,来自不同数据源的地图服务。比如
arcgis server的地图服务,Google Map的地图,Virtual Earth的
地图等;
3、ArcGISTiledMap
serviceLayer:
继承自TiledMap
serviceLayer。像上面说的一样,这个图层扩展了TiledMap
serviceLayer,于是
支持由ArcGISServer 9.3版本发布的经过缓存的地图服务;又比如
arcgis server9.2版本发布的缓存地图服务
不支持REST方式连接,如果要在93的客户端API中使用的话,就可以通过TiledMap
serviceLayer扩展
一个比如ArcGISTiledMap
serviceLayer92,来
支持92Server发布的缓存地图服务;
4、DynamicLayer:
继承自Layer,是动态地图服务的基类;
5、DynamicMap
serviceLayer:
继承自DynamicLayer,对应于TiledMap
serviceLayer,要使用未经过缓存的动态地图服务,就得通过扩展这个图层来实现;
6、ArcGISDynamicMap
serviceLayer:
继承自DynamicMap
serviceLayer,针对
arcgis server9.3版本发布的动态地图服务。同理,如果要在客户端API中使用其他动态地图服务,比如OGC的WMS服务,则也需要像这个图层一样,扩展上面的DynamicMap
serviceLayer来实现;
7、ArcGISImage
serviceLayer:
继承自DynamicMap
serviceLayer,针对
arcgis server 9.3版本发布的Image
service,因为影像服务也属于动态的地图服务。在客户端API中,可以通过ArcGISImage
serviceLayer的一些
属性,方
便通过浏览器来展示服务器端的影像数据,比如通过BandIds
属性,可以
快速调整影像数据
显示波段的组合(RGB通道),提供不同结果供
用户查看。
点击这里,查看
一个实例;
8、GPResultImageLayer:
继承自DynamicMap
serviceLayer,针对Geoprocessing服务所产生的结果。可以请求服务器端的GP服务将结果动态
生成一张
图片,将此
图片作为GPResultImageLayer图层直接
添加到Map控件中;
9、GraphicsLayer:
继承自Layer,是图形数据集中展现的地方,在第四讲中已经详细讨论过了;
10、FeatureLayer:
继承自GraphicsLayer,这也是Silverlight API中的亮点之一,通过它可以完成
一个比较炫的
功能: