博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
DeepEarth中的几何图形基础框架模型
阅读量:7229 次
发布时间:2019-06-29

本文共 1741 字,大约阅读时间需要 5 分钟。

 众所周知,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.5848
29.5773
), 
new
 Point(
106.5848
29.5779
), 
new
 Point(
106.5858
29.5773
) };
polygon.FillColor 
=
 Colors.Red;
//
将多边形添加到地图图成上
transformLayer.Add(polygon);
 
 
  代码中注释写得非常详细,这里就不作详细说明了,其运行效果如下图:
        
 
本文转自 beniao 51CTO博客,原文链接:http://blog.51cto.com/beniao/281382,如需转载请自行联系原作者
你可能感兴趣的文章
九曲黄河万里沙,浪淘风簸自天涯 — 正则表达式
查看>>
欲哭无泪,联想笔记本性价比
查看>>
很简单的在Ubuntu系统下安装字体和切换默认字体的方法
查看>>
我的友情链接
查看>>
dojo框架用hitch实现函数与上下文的绑定
查看>>
ubuntu编译安装vim7.4
查看>>
python之利用PIL库实现页面的图片验证码及缩略图
查看>>
IP-COM设置×××
查看>>
VPC配置案例
查看>>
十年IT运维谈(五):要专业化还是平台化?
查看>>
分享超级给力的一个外发光Shader
查看>>
oblog_4.6_SQL 语句
查看>>
通过Git WebHooks+脚本实现自动更新发布代码之shell脚本
查看>>
对象实例化、字符串的使用方法
查看>>
keepalived基于LVS实现高可用,实现web服务的高可用
查看>>
80端口被Microsoft-HTTPAPI/2.0占用的解决办法
查看>>
无法抗拒Minecraft给予超高的自由度和探索-微访谈
查看>>
数据结构之串
查看>>
我的友情链接
查看>>
lvs+keepalived+nginx+tomcat高可用高性能集群部署
查看>>