当前位置: 首页 > news >正文

DeepEarth中的几何图形基础框架模型

  众所周知,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控件中呈现在界面的。

<!--<br/ /><br/ />Code highlighting produced by Actipro CodeHighlighter (freeware)<br/ />http://www.CodeHighlighter.com/<br/ /><br/ />--> public ObservableCollection < ILayer > Layers
{
get { return _Layers;}
}

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

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

<!--<br/ /><br/ />Code highlighting produced by Actipro CodeHighlighter (freeware)<br/ />http://www.CodeHighlighter.com/<br/ /><br/ />--> // 创建一个地图图层对象,将当前地图对象传递给构造方法
GeometryLayertransformLayer = new GeometryLayer(map){UpdateMode = GeometryLayer.UpdateModes.TransformUpdate};
// 将地图图层添加到地图上
map.Layers.Add(transformLayer);

// 绘制一个多边形
DeepEarth.Geometry.Polygonpolygon = 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);

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

        

  DeepEarth相关文章推荐:

  初探DeepEarth控件

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

探索DeepEarth的内置控件

  DeepEarth中的拖放行为(DragBehavior)

相关文章:

  • C/C++ 宏带来的奇技淫巧
  • vim 全局替换_推荐一些VIM操作技巧
  • zookeeper 分布式锁_zookeeper分布式锁最完美实现Curator剖析
  • 南昌
  • 思科wlc产品文档_基于Catalyst 9800 无线控制器的思科OEAP远程办公解决方案
  • 留记
  • ubuntu golang指定glibc版本_Go Lang 开发笔记《使用 Go Lang 搭建一个 Web 服务!》
  • 装机后进不了bios_是生产力也是游戏主力,12.7升A4风冷小钢炮装机体验
  • 差了点什么呢?
  • 黑盒测试和白盒测试_黑盒测试是什么及其测试方法
  • kmem 反编译linux内核_Linux 内核 VS 内存碎片 (上)
  • 总有一些人可以超越死亡——leo荐书(5)
  • 【转】为什么我认为每个程序员都应该用Mac OS X?
  • 用yacc编写的算术运算计算器_Android版科学计算器 Casio business 下载
  • 【转】开发人员为何应该使用 Mac OS X 兼 OS X 小史
  • 【翻译】babel对TC39装饰器草案的实现
  • ABAP的include关键字,Java的import, C的include和C4C ABSL 的import比较
  • C++类中的特殊成员函数
  • extract-text-webpack-plugin用法
  • IE报vuex requires a Promise polyfill in this browser问题解决
  • Laravel深入学习6 - 应用体系结构:解耦事件处理器
  • Python打包系统简单入门
  • quasar-framework cnodejs社区
  • SpringCloud集成分布式事务LCN (一)
  • Terraform入门 - 3. 变更基础设施
  • Theano - 导数
  • vuex 笔记整理
  • Wamp集成环境 添加PHP的新版本
  • Web Storage相关
  • 关键词挖掘技术哪家强(一)基于node.js技术开发一个关键字查询工具
  • 关于extract.autodesk.io的一些说明
  • 猫头鹰的深夜翻译:Java 2D Graphics, 简单的仿射变换
  • 让你的分享飞起来——极光推出社会化分享组件
  • 微信小程序--------语音识别(前端自己也能玩)
  • 翻译 | The Principles of OOD 面向对象设计原则
  • ​创新驱动,边缘计算领袖:亚马逊云科技海外服务器服务再进化
  • # Swust 12th acm 邀请赛# [ K ] 三角形判定 [题解]
  • # 达梦数据库知识点
  • (C语言)二分查找 超详细
  • (Note)C++中的继承方式
  • (二)WCF的Binding模型
  • (理论篇)httpmoudle和httphandler一览
  • (算法设计与分析)第一章算法概述-习题
  • (转)Linux NTP配置详解 (Network Time Protocol)
  • (转)ObjectiveC 深浅拷贝学习
  • (转)树状数组
  • (转)微软牛津计划介绍——屌爆了的自然数据处理解决方案(人脸/语音识别,计算机视觉与语言理解)...
  • **登录+JWT+异常处理+拦截器+ThreadLocal-开发思想与代码实现**
  • .net core控制台应用程序初识
  • .NET Standard 的管理策略
  • .NET 的静态构造函数是否线程安全?答案是肯定的!
  • .Net 中Partitioner static与dynamic的性能对比
  • .net的socket示例
  • .NET框架类在ASP.NET中的使用(2) ——QA
  • /dev下添加设备节点的方法步骤(通过device_create)