众所周知,DeepEarth是一套基于Silverlight的DeepZoom技术实现的开源地图开发组件,其内部提供了常用的地图开发工具控件和通用的基础模型,如线条、多边形、不规则图形、图片等一系列图形图像的基础架构模型,这为使用DeepEarth进行地图二次开发提供了非常方便的基础架构接口。本篇将介绍在DeepEarth中的几何图形架构设计和所提供的基础架构模型框架。

  

  在DeepEarth的几何图形架构中提供了最基础的几何图形应用开发模型,包括几何图层、点、线、多边形、不规则图形等,在实际的开发过程中可以通过这些基础模型扩展出自己想要的任何图形图像效果,如下类图结构:

         

 

  GeometryBase类提供了最基本的Silverlight控件所具备的相关特性以及几何图形所需的必备特性。

  PathBase和PointBase继承于GeometryBase,分别实现了在地图上呈现不同的不规则点和规则的点的特性。

  Polygon和LineString继承于PathBase,分别实现了在地图上呈现不同的多边形图形和线条图像的特性。

 

  以上几个类共同组成了DeepEarth的几何图形基础框架模型,实现了不同类型图形图形的绘制等功能特性。如果能够绘制出图形图像还是不够的,我们最终的目标是需要将绘制的不同的图形图像呈现在地图的界面上,达到能够通过肉眼看到所呈现的效果图,那具体该如何实现能够呈现到地图界面上呢?

 

  为解决上面这种呈现问题,在DeepEarth的几何图形基础框架模型中提供了一个几何图层类(GeometryLayer)专门来实现这个功能。因为DeepEarth的Map控件要求了其Layers必须是ILayer接口类型的扩展图层对象,因此GeometryLayer是一个实现了ILayer接口的图层,可以直接用来作为子元素添加到DeepEarth的Map控件中呈现在界面的。

public ObservableCollection<ILayer> Layers
{
    
get { return _Layers; }
}

 

  GeometryLayer实现了ILayer接口和一个GeometryBase的泛型集合接口,其内部实现了对地图的一些控制和添加到该图层上的一些图形图像的控制得功能特性。

 

  DeepEarth中的几何图形基础框架模型大致就如上介绍,在后续文章里我将对这些几何图像基础框架模型的应用和扩展进行详细介绍。本篇以Polygon为例,通过一个简单的实例介绍如何使用Polygon实现多边形的绘制并呈现在地图上。

 

复制代码
//创建一个地图图层对象,将当前地图对象传递给构造方法
GeometryLayer transformLayer = new GeometryLayer(map) { UpdateMode = GeometryLayer.UpdateModes.TransformUpdate };
//将地图图层添加到地图上
map.Layers.Add(transformLayer);

//绘制一个多边形
DeepEarth.Geometry.Polygon polygon = new DeepEarth.Geometry.Polygon();
//设置了三个顶点坐标,也就是绘制一个三角形
polygon.Points = new ObservableCollection<Point> { new Point(106.584829.5773), new Point(106.584829.5779), new Point(106.585829.5773) };
polygon.FillColor 
= Colors.Red;
//将多边形添加到地图图成上
transformLayer.Add(polygon);
复制代码

 

 

  代码中注释写得非常详细,这里就不作详细说明了,其运行效果如下图:

        

 

  DeepEarth相关文章推荐:

  初探DeepEarth控件

   使用DeepEarth加载在线Google地图(卫星、街道)

      探索DeepEarth的内置控件

    DeepEarth中的拖放行为(DragBehavior)

 

版权说明

  本文属原创文章,欢迎转载且注明文章出处,其版权归作者和博客园共有。  

  作      者:Beniao

 文章出处:http://beniao.cnblogs.com/  或  http://www.cnblogs.com/

 
posted on 2012-07-26 11:28  裴银祥的博客园  阅读(331)  评论(0编辑  收藏  举报