C#在Winform中使用GMap.Net地图开发控件在离线模式下绘制两点路线

C#在Winform中使⽤GMap.Net地图开发控件离线模式下绘
制两点路线
1.下载基于GMap.NET控件的WindowsForms程序的实例,可以直接引⽤这些dll⽂件编写地图应⽤软件。
我们所要⽤到其中的三个⽂件:
GMap.Net.Core.dll
GMap.Net.WindowsForms.dll
(⽣成离线地图)
之前在编译程序时提⽰⽆GMarkerGoogle定义等错误,原因是我之前载⼊的dll内容不全,缺少很多类的定义。⽽将demo源码中编译好的dll⽂件引⽤到⾃⼰⼯程中则不报错。
2.添加引⽤。
新建⼀个Visual C# 的Windows窗⼝程序,在“解决⽅案资源管理器”中右键“引⽤”,点击“添加引⽤”,在“
浏览”中到dll⽂件所在路径并添加。
3.添加GMapControl控件
打开⼯具箱,右键“所有Windows窗体”,点击“选择项”,在“.NET Framework组件”中添
加“GMap.Net.WindowsForms.dll”并选中。
确定后可以看到⼯具箱中多了⼀栏GMapControl控件。
在Form设计窗⼝下,将GMapControl控件加到Form中,并命名为“gMap”。
4.⽣成离线地图。
启动,选择所需载⼊的地图类型。
按Alt键并使⽤⿏标框选所需载⼊的地图区域,在“cache”栏中选择“Prefetch selected area”,然后按⾃⼰的需求⽣成zoom层次数。
完成后点击“Export”,⽣成“db”⽂件。(本例将该⽂件放⼊应⽤程序⽬录下,即“⼯程\bin\Debug”⽂件夹)
因为在运⾏demo时,会默认在 C:\Users\⽤户名<;你的计算机⽤户名>\AppData\Local\GMap.NET\TileDBv5\en⽂件夹下⽣成地图缓存⽂件db,因此在测试程序是否能运⾏在离线模式时先删除db⽂件。
5. 双击Form设计窗⼝下的GMapControl控件,编写gMap_Load地图载⼊⽅法。
(1)引⼊命名空间
using GMap.NET;
using GMap.NET.WindowsForms;
using GMap.NET.MapProviders;
using GMap.NET.WindowsForms.Markers;
(2)初始化地图
//Bing混合地图
gMap.MapProvider = GMapProviders.BingHybridMap;
//离线模式
gMap.Manager.Mode = AccessMode.CacheOnly;
String mapPath = Application.StartupPath + "\\db";
GMap.NET.GMaps.Instance.ImportFromGMDB(mapPath);
//地图中⼼位置
//gMap.SetPositionByKeywords("beijing, china");
gMap.Position = new PointLatLng(39.185422, 112.252810);  //中⼼点的纬度,经度
//不显⽰中⼼⼗字点
gMap.ShowCenter = false;
//左键拖拽地图
离线浏览
gMap.DragButton = MouseButtons.Left;
gMap.MinZoom = 2;  //最⼩缩放
gMap.MaxZoom = 18;  //最⼤缩放
gMap.Zoom = 6;      //当前缩放
(3)添加起始点标记
//地图由三层组成。最上层:GMapMarker,中间层:GMapOverlay,最底层:GMapControls 
GMapOverlay gMapOverlay = new GMapOverlay("markers");
/
/起点⽔滴标记
PointLatLng start = new PointLatLng(40.187163, 116.18927);  //路径起点
GMapMarker gMapMarker = new GMarkerGoogle(start, );
gMapOverlay.Markers.Add(gMapMarker);                      //向图层中添加标记
gMap.Overlays.Add(gMapOverlay);                          //向控件中添加图层
//终点⽔滴标记
PointLatLng end = new PointLatLng(38.807905, 111.623768);  //路径终点
gMapMarker = new GMarkerGoogle(end, );
gMapOverlay.Markers.Add(gMapMarker);            //向图层中添加标记
gMap.Overlays.Add(gMapOverlay);                          //向控件中添加图层
(4)绘制两点路线
/
/根据起⽌点start、end和当前的zoom查路径
MapRoute route = GMap.NET.MapProviders.BingHybridMapProvider.Instance.GetRoute(start, end, false, false, (int)gMap.Zoom);            if (route != null)
{
//将路转换成线
GMapRoute r = new GMapRoute(route.Points, route.Name);
gMapOverlay.Routes.Add(r);          //向图层中添加道路
gMap.Overlays.Add(gMapOverlay);      //向控件中添加图层
r.Stroke.Width = 3;                  //路径宽度
r.Stroke.Color = Color.Red;          //路径颜⾊
}
6. 效果图。

本文发布于:2024-09-21 17:56:55,感谢您对本站的认可!

本文链接:https://www.17tex.com/tex/2/353879.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:地图   添加   控件   离线   图层   需载   模式   点击
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议