在DeepEarth内部提供了6个地图扩展控件(CoordControl、ScaleControl、NavControl、 MapControl、MouseControl、ZoomSliderControl)为我们提供了相对比较规范、完善的编程模型,通过他们可进一步的增强地图的操作灵活性等,还可通过扩展开发出许多功能强大的扩展程序。本篇主要以DeepEarth内置控件中的最常用的几个控件为主题探索 DeepEarth内置控件的使用方法。
在探索DeepEarth内置控件的使用方法之前先了解下内置控制的基本结构,DeepEarth定义了MapControl控件基类,CoordControl、ScaleControl、NavControl、MouseControl都是通过继承MapControl扩展而来,如下UML图所示:
MapConotrol继承了Silverlight的ContentControl类并实现了DeepEarth的ILayer接口,在整个DeepEarth的扩展开发中提供了基础的编程模型,通过其他源代码可以知道:
MapControl源代码
1 public class MapControl : ContentControl, ILayer
2 {
3 /// <summary>
4 /// Protected backing field for the MapInstance property
5 /// </summary>
6 protected Map _Map;
7
8 #region ILayer Members
9
10 /// <summary>
11 /// Access to instance of the Map for this layer.
12 /// </summary>
13 public virtual Map MapInstance
14 {
15 get
16 {
17 if (_Map == null)
18 {
19 _Map = Map.GetMapInstance(this);
20 }
21
22 return _Map;
23 }
24 set
25 {
26 if (ReferenceEquals(_Map, value))
27 {
28 return;
29 }
30
31 _Map = value;
32 }
33 }
34
35 /// <summary>
36 /// A unique ID to idenitify the layer
37 /// </summary>
38 public string ID { get; set; }
39
40 /// <summary>
41 /// Indicates whether the Layer is visible to the user.
42 /// </summary>
43 public bool IsVisible { get; set; }
44
45 #endregion
46 }
47 }