香農上次寫了有關GMap開源項目源碼的編譯方法,這次就講講怎麼使用GMap進行簡單操作吧。
首先香農建立了一個winform工程,命名爲GMapTest1並在工程中添加了對GMap的引用(GMap.NET.Core.dll和GMap.NET.WindowsForms.dll)
添加完成之後將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上纔會自動顯示出來。
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);
鼠標點擊兩個點之間生成的紅色直線,各個直線首尾相連就形成了我們點擊時生成的路徑。而在代碼中,我們通過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);
點擊調試運行,運行效果如下所示,需要鼠標點擊至少三次以上纔可以哦:
至此我們便可以通過在GMapOverlay對象上進行操作,從而對GMap地圖控件進行相關功能的定製或者拓展了。
最後附上本次的源碼:http://download.csdn.net/detail/yuanquanzheng/9591930