c# winform GMAP.NET离线模式怎么保存和使用离线地图? GMap.Net开发之技巧小结

时间:2024-04-17 11:26:56

1)GMAP.NET是开源地图控件,可以使用多个基于WEB服务的地图源:谷歌地图、微软BING地图……

2)在你应用程序中,使用这套控件从这些地图源获取并显示地图的同时,地图数据也被保存到你的计算机上。这样,不联网时,使用地图的应用程序仍然能够使用已经保存在本计算机的地图数据。

3)保存地图数据的过程是自动完成的,不需要你做任何编程

4)地图数据通常保存在文件夹C:\Users\[用户名]\AppData\Local\GMap.NET下,这个文件夹是保存地图数据默认的位置

5)你可以将这个文件下的所有文件和文件复制到任何地方,比如,复制到D:\GMap.NET下

6)要使用离线地图,只需要:

//如果不使用默认文件夹下的离线地图文件夹,必须设置你使用的离线地图文件夹
mapControl1.CacheLocation = @"D:\GMap.NET"
 //只使用离线地图!
mapControl1.Manager.Mode = AccessMode.CacheOnly;

 二、http://www.cnblogs.com/luxiaoxun/p/3530341.html   

非常感谢分享,支持你。
有几个问题请教,在你不忙的时候能给出答案,非常感谢
1. 我在离线地图数据包时,在gMapControl的Load事件初始化地图
new Thread(()=>GMap.Instance.ImportFromGMDB(AppDomain.CurrentDomain.BaseDirectory+"MapData\\Data_Terrain.gmdb")).Start();
gMapControl1.Manager.Mode = GMap.NET.AccessMode.ServerOnly;
//设置控件的地图来源
gMapControl1.MapProvider = GMap.NET.MapProviders.GMapProviders.GoogleChinaTerrainMap;
//设置控件显示的当前中心点位置
gMapControl1.Position = new GMap.NET.PointLatLng(21.0,116);

Mode 设置为 ServerOnly 时,地图都是异常,Exception:未能解析远程名称:mt1.google.cn 等等同类异常。
如果:Mode 设置为 CacheOnly 时,地图正常展示。

==---===

1、Manager.Mode,Mode 设置为 ServerOnly 时,gmap需要联网获取网络服务上的地图图片,出现Exception说明它没有正确获取到。Mode 设置为 CacheOnly 时,访问的是本地离线的,默认是在mapControl.CacheLocation这个路径上的gmdb,不过你通过GMap.Instance.ImportFromGMDB这个接口已经设置了本地离线的gmdb数据包。