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

2021-06-26  本文已影响0人  安静的林哥

我们采用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会自动为本地创建缓存文件,本项目暂未考虑,所以选择从服务器直接读取。

默认地图
上一篇下一篇

猜你喜欢

热点阅读