打造地图拼接利器(二)软件框架

我们采用Visual studio2013作为开发环境,GMap.net作为地图环境,实现相关功能。

一、GMap.net

GMap.NET 是一个免费、开源的.NET控件,有Windows Forms 和WPF2个版本,内置了Google, Yahoo!, Bing, OpenStreetMap, ArcGIS, Pergo, SigPac等实现寻找路径、地理编码以及地图展示功能,并支持缓存和运行在Mobile环境中。在https://gitee.com/lukeson/gmap下载源码,运行build下的批处理文件,生成相应版本的动态库。


编译控件库

二、软件界面

打开vs2013,新建一个项目,起好名称,选择window桌面、windows窗体应用程序,.net版本选为4.0即可。


vs设置

增加菜单和状态栏,添加一个splitcontainer,左侧设置相关参数区域,右侧设置一个panel,用于承载地图控件,并添加地图切换、覆盖地图(主要用于在卫星图上覆盖路网,生成复合地图)2个Combox控件,再增加一个TrackBar控件,用于控制地图缩放。


主界面布局

在解决方案管理器的引用中添加对GMap.NET.Core.dll和GMap.NET.WindowsForms.dll的引用。

编辑主窗体的源码,加入对Gmap控件的初始化代码,完成地图控件,鼠标移动后经纬度、缩放级别的显示和地图图源配置:

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("鼠标所在经纬度:{0},{1}  当前层:{2}", point.Lng, point.Lat,gmapc.Zoom);

        }

我们的地图provider先以bing地图为例,运行程序,即可看到地图。这里补充一下,通过gmapc.Manager.Mode = AccessMode.ServerOnly可以设置地图是否缓存到本地,GMap.net会自动为本地创建缓存文件,本项目暂未考虑,所以选择从服务器直接读取。


默认地图
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容