我們采用Visual studio2013作為開(kāi)發(fā)環(huán)境扯俱,GMap.net作為地圖環(huán)境泣特,實(shí)現(xiàn)相關(guān)功能回论。
一散罕、GMap.net
GMap.NET 是一個(gè)免費(fèi)、開(kāi)源的.NET控件傀蓉,有Windows Forms 和WPF2個(gè)版本欧漱,內(nèi)置了Google, Yahoo!, Bing, OpenStreetMap, ArcGIS, Pergo, SigPac等實(shí)現(xiàn)尋找路徑、地理編碼以及地圖展示功能葬燎,并支持緩存和運(yùn)行在Mobile環(huán)境中误甚。在https://gitee.com/lukeson/gmap下載源碼,運(yùn)行build下的批處理文件谱净,生成相應(yīng)版本的動(dòng)態(tài)庫(kù)窑邦。
二、軟件界面
打開(kāi)vs2013壕探,新建一個(gè)項(xiàng)目冈钦,起好名稱(chēng),選擇window桌面李请、windows窗體應(yīng)用程序瞧筛,.net版本選為4.0即可厉熟。
增加菜單和狀態(tài)欄,添加一個(gè)splitcontainer较幌,左側(cè)設(shè)置相關(guān)參數(shù)區(qū)域揍瑟,右側(cè)設(shè)置一個(gè)panel,用于承載地圖控件乍炉,并添加地圖切換绢片、覆蓋地圖(主要用于在衛(wèi)星圖上覆蓋路網(wǎng),生成復(fù)合地圖)2個(gè)Combox控件岛琼,再增加一個(gè)TrackBar控件底循,用于控制地圖縮放。
在解決方案管理器的引用中添加對(duì)GMap.NET.Core.dll和GMap.NET.WindowsForms.dll的引用衷恭。
編輯主窗體的源碼此叠,加入對(duì)Gmap控件的初始化代碼,完成地圖控件随珠,鼠標(biāo)移動(dòng)后經(jīng)緯度灭袁、縮放級(jí)別的顯示和地圖圖源配置:
GMapControlgmapc;
?publicmainForm()
??????? {
??????????? InitializeComponent();
??????????? InitUI();
}
??????? private voidInitMap()
??????? {
??????????? gmapc= new GMapControl();
??????????? mainPanel.Controls.Add(gmapc);
??????????? gmapc.Dock = DockStyle.Fill;
????? ??????gmapc.MapProvider= GMapProviders.BingMap;;
??????????? gmapc.CacheLocation = Application.StartupPath;
??????????? gmapc.Manager.Mode = AccessMode.ServerOnly;
??????????? gmapc.Position = new PointLatLng(40.0, 117.0);
??????????? gmapc.MinZoom = 1;
??????????? gmapc.MaxZoom = 21;
??????????? gmapc.Zoom = 5;
??????????? trackBar1.Value = (int)gmapc.Zoom;
??????????? gmapc.OnMapZoomChanged +=gmapc_OnMapZoomChanged;
??????????? gmapc.MouseMove +=gmapc_MouseMove;
??????? }
??????? void gmapc_MouseMove(object sender, MouseEventArgse)
??????? {
??????????? PointLatLng point = gmapc.FromLocalToLatLng(e.X,e.Y);
??????????? tsslPosition.Text = string.Format("鼠標(biāo)所在經(jīng)緯度:{0},{1}? 當(dāng)前層:{2}", point.Lng, point.Lat,gmapc.Zoom);
??????? }
我們的地圖provider先以bing地圖為例,運(yùn)行程序窗看,即可看到地圖茸歧。這里補(bǔ)充一下,通過(guò)gmapc.Manager.Mode = AccessMode.ServerOnly可以設(shè)置地圖是否緩存到本地显沈,GMap.net會(huì)自動(dòng)為本地創(chuàng)建緩存文件软瞎,本項(xiàng)目暫未考慮,所以選擇從服務(wù)器直接讀取拉讯。