眾所周知,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);
代碼中注釋寫得非常詳細,這裡就不作詳細說明了,其運行效果如下圖:
通過DeepEarth內置的幾何圖形基礎框架模型開發出的幾何圖形,如線條、多邊形等會隨著地圖的縮放 進行放大或縮小顯示。