天天看點

GMap.Net開發之在WinForm和WPF中使用GMap.Net地圖插件

gmap.net是什麼?

來看看它的官方說明:gmap.net is great and powerful, free, cross platform, open source .net control. enable use routing, geocoding, directions and maps from coogle, yahoo!, bing, openstreetmap, arcgis, pergo, sigpac, yendux, mapy.cz, maps.lt, ikarte.lv, nearmap, ovimap, cloudmade, wikimapia, mapquest in windows forms & presentation, supports caching and runs on windows mobile!

gmap.net是一個強大、免費、跨平台、開源的.net控件,它在windows forms 和wpf環境中能夠使用來自google, yahoo!, bing, openstreetmap, arcgis, pergo, sigpac等地圖,并可以實作尋找路徑、地理編碼以及地圖展示功能,并支援緩存和運作在mobile環境中。

如何在winform中使用gmap.net

下載下傳gmap.net,我下載下傳的版本:greatmaps_81b71bf30091,編譯三個核心項目:

gmap.net.core:核心dll

gmap.net.windowsforms:winform中使用的dll

gmap.net.windowspresentation:wpf中使用的dll

在winform項目中使用gmap:

1、建立一個visual c# 的windows視窗程式。添加對gmap.net.core.dll和gmap.net.windowsforms.dll的引用。

2、在項目中添加一個usercontrol,這裡取名為mapcontrol,修改這個usercontrol,使其繼承于gmapcontrol,這就是展示地圖的控件。修改如下:

GMap.Net開發之在WinForm和WPF中使用GMap.Net地圖插件
GMap.Net開發之在WinForm和WPF中使用GMap.Net地圖插件

3、編譯項目,在我們的form設計視窗下,在工具箱中(tool box)裡就可以看到這個mapcontrol,将這個mapcontrol加到form中。

4、在主form中添加相關的代碼如下

GMap.Net開發之在WinForm和WPF中使用GMap.Net地圖插件
GMap.Net開發之在WinForm和WPF中使用GMap.Net地圖插件

5、編譯、運作項目就可以看到地圖,這裡使用的是線上的google中國的地圖,地圖控件的幾個主要屬性:

mapprovider:地圖服務的提供者。

minzoom:最小縮放,最小可為1。

maxzoom:最大縮放,最大為24.

zoom:目前縮放。

showcenter:是否顯示中心點(最好為false,否則地圖中間會有一個紅色的十字)。

dragbutton:哪個鍵拖動地圖。

position:地圖中心點位置。

地圖顯示如下,支援左鍵拖動,放大縮小,可以顯示左鍵的點選經緯度。

GMap.Net開發之在WinForm和WPF中使用GMap.Net地圖插件

如何在wpf中使用gmap.net

1、建立一個visual c# 的wpf程式。添加對gmap.net.core.dll和gmap.net.windowspresentation.dll的引用。

2、由于wpf的usercontrol不能修改繼承的基類,是以添加一個新的類,為mapcontrol.cs,代碼如下:

GMap.Net開發之在WinForm和WPF中使用GMap.Net地圖插件
GMap.Net開發之在WinForm和WPF中使用GMap.Net地圖插件

隻需要繼承gmapcontrol就行了,基本功能都可以由gmapcontrol提供。

3、在我們的mainwindow.xaml中,添加項目的namespace:xmlns:src="clr-namespace:gmapwpfdemo",在xml代碼中添加對mapcontrol.cs的使用:

GMap.Net開發之在WinForm和WPF中使用GMap.Net地圖插件
GMap.Net開發之在WinForm和WPF中使用GMap.Net地圖插件

4、在mainwindow中添加相關的代碼如下:

GMap.Net開發之在WinForm和WPF中使用GMap.Net地圖插件
GMap.Net開發之在WinForm和WPF中使用GMap.Net地圖插件

效果圖如下:

GMap.Net開發之在WinForm和WPF中使用GMap.Net地圖插件

和winform代碼差不多,一些響應事件不同,wpf的gmap中沒有gmapoverlay這個“圖層”的概念,是以沒法加多個gmapoverlay,在gmapoverlay上再加gmapmarker(可以了解為圖示标注),gmapmarker隻能直接加在mapcontrol上面。

wpf的gmapmarker可以直接執行個體化(winform中的不行),但是貌似沒有預設提供的效果,而要做出一些效果,需要自己設計實作,官方demo中已經有了一些實作,winform中的gmapmarker可以用gmarkergoogle去執行個體化(提供的有可選的效果,也可以自己傳入bitmap作為自定義的圖示)。

做過一段時間arcgis開發,由于arcgis的授權費用,為了節省成本,開始搞gmap.net。。。剛開始研究,待續。。。

本文版權歸作者和部落格園共有,歡迎轉載,但未經作者同意必須保留此段聲明,且在文章頁面明顯位置給出原文連接配接,否則保留追究法律責任的權利。

http://www.cnblogs.com/luxiaoxun/p/3463250.html