DeepEarth 是一套基於 Silverlight DeepZoom 技術實現的開源地圖開發組件,內建了豐富的地圖開發工具控件與通用基礎模型,涵蓋線條、多邊形、不規則圖形、圖片等圖形圖像的基礎架構,為地圖二次開發提供了極其便利的基礎架構介面。本文將深入介紹 DeepEarth 中幾何圖形架構設計及其提供的基礎框架模型。
在 DeepEarth 的幾何圖形架構中,提供了最基礎的幾何圖形應用開發模型,主要包含幾何圖層、點、線、多邊形、不規則圖形等。開發者可透過這些基礎模型擴展出任意想要的圖形圖像效果。其核心類別繼承關係如下:
這幾個類別共同構成了 DeepEarth 的幾何圖形基礎框架模型,實現了不同類型圖形的繪製功能。然而,僅能繪製圖形仍不夠,最終目標是將繪製的圖形呈現在地圖介面上供肉眼觀察,這就需要用到幾何圖層。
為解決圖形呈現問題,DeepEarth 提供了 GeometryLayer 類別專門實現此功能。由於 DeepEarth 的 Map 控件要求其 Layers 必須是 ILayer 介面類型的擴展圖層物件,因此 GeometryLayer 實作了 ILayer 介面,可直接作為子元素添加到 Map 控件中呈現在介面上。
public ObservableCollection<ILayer> Layers
{
get { return _Layers; }
}
GeometryLayer 不僅實作了 ILayer 介面,還包含一個 GeometryBase 的泛型集合介面,內部實現了對地圖的控制以及添加到該圖層上的圖形圖像的控制功能。
以下以 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 內建的幾何圖形基礎框架模型開發出的幾何圖形(如線條、多邊形等)會隨著地圖的縮放進行放大或縮小顯示,完美適應地圖操作需求。
後續文章將對這些幾何圖像基礎框架模型的應用與擴展進行詳細介紹,敬請期待。