GMap.NET 使用教程【1】
GMap.NET是一個強大、免費、跨平臺、開源的.NET控件,它在Windows Forms和WPF環境中能夠通過Google, Yahoo!, Bing, OpenStreetMap, ArcGIS, Pergo, SigPac等實現路徑規劃、地理編碼以及地圖展示功能,并支持緩存和運行在Mobile環境中。?
本文介紹了從下載安裝到如何使用GMap.NET。
本文所使用的GMap.NET版本為1.7穩定版。
下載和安裝
下載庫文件安裝
從這里下載,解壓后得到兩個文件(GMap.NET.Core.dll 和 GMap.NET.WindowsForms.dll)。?
然后在項目中添加引用。?
?
添加GMapControl到工具箱。在“選擇項”時,選擇“GMap.NET.WindowsForms.dll”文件即可添加。?
使用NuGet安裝
添加地圖控件
拖拽GMapControl到Windows Form中,可看到控件中心有個小十字。查看屬性,你會發現GMap.NET的一些特有屬性。通過設置這些屬性可以配置地圖的行為,但是不能設置其內容。?
?
* Bearing - 按照指定的度數向左旋轉地圖?
* CanDragMap – 是否啟用鼠標右鍵拖動(平移)地圖?
* EmptyTileColor – 設置沒有數據的切片所顯示的顏色?
* MarkersEnabled – 是否顯示定義的標記,同PolygonsEnabled和RoutesEnabled?
* ShowTileGridLines – 顯示網格線?
* Zoom,MinZoom和MaxZoom - 縮放級別
GMap.NET支持多種地圖源,定義地圖源需要在代碼中去設置。可以在GMapControl的 Load 事件中添加如下代碼:
this.gMapControl1.MapProvider = OpenStreet4UMapProvider.Instance; // 設置地圖源 GMaps.Instance.Mode = AccessMode.ServerAndCache; // GMap工作模式 this.gMapControl1.SetPositionByKeywords("北京"); // 地圖中心位置//使用經緯度設置地圖中心 //this.gMapControl1.Position = new GMap.NET.PointLatLng(39.923518, 116.539009);① MapProvider:設置地圖源,輸入GMapProviders可以看到GMap所支持的所有地圖源。?
?
② GMaps.Instance.Mode: GMap可以從服務器、本地緩存、服務器或本地緩存獲取數據。這適用于在應用程序中創建的所有GMap控件實例,只需要設置一次該值。?
?
③ 設置地圖中心位置可以使用關鍵字或者經緯度。?
④ 地圖顯示結果。按住鼠標右鍵可以拖拽地圖,當然也可以設置其他鍵來拖拽。
添加標記
//創建一個名為“markers”的圖層
GMapOverlay markers = new GMapOverlay("markers");
//創建標記,并設置位置及樣式
GMapMarker marker = new GMarkerGoogle(new PointLatLng(39.923518, 116.539009), GMarkerGoogleType.blue_pushpin);
//將標記添加到圖層
markers.Markers.Add(marker);
//將圖層添加到地圖
this.gMapControl1.Overlays.Add(markers);
① GMapOverlay:圖層。添加的標記、圖形、路徑等都是在圖層上操作的。?
② GMapMarker:GMarkerGoogle,提供標記位置(PointLatLng)和標記樣式。 它有兩個重載,可以使用GMarkerGoogleType和位圖。GMap.NET還提供了GMarkerCross,這是一個簡單的十字,不允許使用圖標。
GMapMarker還可以設置ToolTip。
marker.ToolTipText = "我在這里"; marker.ToolTip.Fill = new SolidBrush(Color.FromArgb(100, Color.Black)); marker.ToolTip.Foreground = Brushes.White; marker.ToolTip.TextPadding = new Size(20, 20);③ 地圖顯示結果。(發現中心的小十字沒了嗎,因為這是可以設置的)?
④ 標記點擊事件?
標記本身沒有任何事件鉤子,GMapControl的OnMarkerClick事件即為標記點擊事件。在下面的示例中,點擊標記會彈出提示框顯示ToolTip的文本內容。當然GMap.NET不只有點擊事件,還有OnMarkerEnter、OnMarkerLeave。
添加多邊形
添加多邊形和添加標記的原理是一樣的。
顯示結果。?
路徑規劃
GMap.NET中路徑規劃主要用RoutingProvider類的以下兩種方法:
通過點擊地圖,添加起止點
添加地圖標記之前,需要先清除(Clear)以下,這樣可以避免重復點擊地圖時,顯示多個標記。
查找路徑
private void btn_FindRoute_Click(object sender, EventArgs e) {//點擊查找路徑后,不再添加點isSetPoint = 0;RoutingProvider rp = this.gMapControl1.MapProvider as RoutingProvider;//獲取路徑MapRoute route = rp.GetRoute(startPoint, endPoint, false, false, (int)this.gMapControl1.Zoom);if (route != null){//添加routes圖層GMapOverlay routes = new GMapOverlay("routes");GMapRoute r = new GMapRoute(route.Points, route.Name);r.Stroke = new Pen(Color.Red, 3);routes.Routes.Add(r);//添加到地圖this.gMapControl1.Overlays.Add(routes);this.gMapControl1.ZoomAndCenterRoute(r);}else{MessageBox.Show("未能找到路線");} }查找路徑結果。
如果路徑查找結果(route)為null,要么時確實沒有結果,要么是GMap封裝的地址搜索服務失效。我在寫這篇文章時,就無法使用GoogleChinaMap,上圖是使用OpenStreetMap的搜索結果。
---------------------?
作者:huanglii?
原文:https://blog.csdn.net/huangli0/article/details/80147243?
總結
以上是生活随笔為你收集整理的GMap.NET 使用教程【1】的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 傲梅分区助手 去掉使用码
- 下一篇: GMAP.NET应用及离线地图加载