天天看點

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控件中呈現在界面的。

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,如需轉載請自行聯系原作者