GMap 初步使用

香農上次寫了有關GMap開源項目源碼的編譯方法,這次就講講怎麼使用GMap進行簡單操作吧。

首先香農建立了一個winform工程,命名爲GMapTest1並在工程中添加了對GMap的引用(GMap.NET.Core.dll和GMap.NET.WindowsForms.dll)
添加GMap引用
添加完成之後將GMapControl控件拖拽到Form面板上,默認GMapControl名稱爲gMapControl1(香農不想改了,筒子們可以改)。

1、加載地圖

要使用GMap加載地圖,首先需要指定加載的地圖類,地圖加載方式,地圖縮放比例,地圖顯示中心等基本地圖屬性。具體的操作代碼如下:

       this.gMapControl1.CacheLocation = System.Windows.Forms.Application.StartupPath;//指定地圖緩存存放路徑
        this.gMapControl1.MapProvider = GMapProviders.BingHybridMap;//指定地圖類型
        this.gMapControl1.Manager.Mode = AccessMode.ServerAndCache;//地圖加載模式
       this.gMapControl1.MinZoom = 1;   //最小比例
        this.gMapControl1.MaxZoom = 23; //最大比例
        this.gMapControl1.Zoom = 15; //當前比例
        this.gMapControl1.ShowCenter = false; //不顯示中心十字點
        this.gMapControl1.DragButton =System.Windows.Forms.MouseButtons.Left;//左鍵拖拽地圖
        this.gMapControl1.Position = new PointLatLng(23,113);

GMap有三種加載模式Server(從目標服務器加載)、Cache(從指定緩存加載)、ServerAndCache(使用服務器和緩存加載並存的方式加載)根據項目的實際情況自己選擇,GMap地圖縮放共有24級,縮放比例從1到24地圖顯示區域逐漸變大,顯示場景範圍逐漸變大,換言之就是,縮放比例越大,顯示地理信息越詳細,縮放比例越小,顯示的地理位置寬度也就越大,地圖比例尺也就越大。GMap默認使用鼠標右鍵進行地圖拖動,這不符合我們一貫的習慣,將其改爲鼠標左鍵拖動。運行我們的工程,就可以看到我們加載的地圖。

地圖加載結果

2、GMapOverlay類介紹

當我們成功加載地圖之後,需要在地圖上進行操作,此時就需要使用到GMapOverlay類,我們可以把GMapOverlay看成是透明的畫布,蒙在我們的地圖之上,當我們在GMapOverlay上進行操作時,GMapOverlay上繪製的內容將會覆蓋在地圖上方,使得我們的Marker,Routes等,和地圖信息是一一對應的。

首先聲明一個GMapOverlay對象,可以使用帶參的構造函數也可以使用不帶參數的構造函數。

public GMapOverlay overlay = new GMapOverlay("Marker"); 

GMap對象中有一個公有的集合屬性變量Overlays,當我們聲明一個屬性GMapoverlay變量時,我們將聲明的overlay添加到集合中去,

   this.gMapControl1.Overlays.Add(overlay);

這樣當我們對overlay進行操作時,就是對GMap進行操作的,

在GMapOverlay中有三個比較關鍵的集合類型變量:Markers,Routes,Polygons.

Markers:

Markers用來標識我們地圖使用者想要突出或標記的信息,通常用它來標明一個點所在的位置,名稱等信息,這裏做一個單機鼠標左鍵在地圖上標記Marker的實例。首先我們需要使用到GMap的鼠標點擊事件:

   this.gMapControl1.MouseClick += gMapControl1_MouseClick;

我們便可以在消息響應函數gMapControl1_MouseClick中進行Marker的顯示操作了。

PointLatLng p = this.gMapControl1.FromLocalToLatLng(e.X, e.Y);//將鼠標點擊點座標轉換爲經緯度座標
GMapMarker marker = new GMarkerGoogle(p, GMarkerGoogleType.arrow);
        marker.ToolTipText = "點擊了這個點";
        this.overlay.Markers.Add(marker);

顯示效果如下:

Marker顯示
途中紅色矩形框標註出來的便是地圖上用來標識點的Marker,而用紅色橢圓標註出來的部分,則是用於指示該Marker的提示工具,需要將鼠標移動到相應的Marker上纔會自動顯示出來。

Routes:

從字面上來講Routes集合是用來存儲路徑的,事實上也是如此,可是存儲路徑是怎麼一個存儲方式呢?這裏香農也做了一個通過點擊鼠標生成路徑並顯示出來的例子。首先在工程代碼中聲明一個經緯度點的集合變量:

            List<PointLatLng> list = new List<PointLatLng>();

在gMapControl1的鼠標點擊事件中添加如下代碼(最好是先刪除或者註釋掉有關Marker的代碼):

        overlay.Routes.Clear();
        list.Add(p);
        GMapRoute route= new GMapRoute(list, "line");
        route.Stroke.Color = Color.Red;
        route.Stroke.Width = 2;  //設置畫
        overlay.Routes.Add(route);

Routes示例
鼠標點擊兩個點之間生成的紅色直線,各個直線首尾相連就形成了我們點擊時生成的路徑。而在代碼中,我們通過route.Stroke.Color設置線段的顏色,route.Stroke.Width設置線段的粗細。

Polygons:

Polygons集合對象其實表示的是在地圖上選擇的某個區域,同樣的香農這裏做一個鼠標點擊生成一個Polygon的實例:

        overlay.Polygons.Clear();
        GMapPolygon polygon = new GMapPolygon(list, "多邊形");
        polygon.Fill = new SolidBrush(Color.FromArgb(50, Color.Red));
        polygon.Stroke = new Pen(Color.Blue,2);
        polygon.IsHitTestVisible = true;
        overlay.Polygons.Add(polygon);

點擊調試運行,運行效果如下所示,需要鼠標點擊至少三次以上纔可以哦:
Polygon顯示效果

至此我們便可以通過在GMapOverlay對象上進行操作,從而對GMap地圖控件進行相關功能的定製或者拓展了。

最後附上本次的源碼:http://download.csdn.net/detail/yuanquanzheng/9591930

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章