要求:实现离线地图,地图上有小船标志,还有电子围栏的功能用来区分该小船是否在电子围栏范围内  

C#实现步骤:

  1、添加引用:GMap.NET.Core.dll、GMap.NET.WindowsForms.dll

  2、在工具箱右键【选择项】浏览,添加GMap.NET.WindowsForms.dll控件

  3、界面将添加的GMap控件拖进来  4、双击打开Demo.WindowsForms.exe应用,选择地图类型(map Type),按住Alt键选择需要的地图片段,点击Prefetch selected area等待地图瓦片下载完成,最后点击Export导出保存到项目的Debug下面

  5、双击项目的GMap控件初始化地图
  1 using System;
  2 using System.Collections.Generic;
  3 using System.ComponentModel;
  4 using System.Data;
  5 using System.Drawing;
  6 using System.Linq;
  7 using System.Text;
  8 using System.Threading.Tasks;
  9 using System.Windows.Forms;
 10 using DevComponents.DotNetBar;
 11 using DevComponents.DotNetBar.SuperGrid;
 12 using System.IO;
 13
 14 using GMap.NET;
 15 using GMap.NET.WindowsForms;
 16 using GMap.NET.MapProviders;
 17 using GMap.NET.WindowsForms.Markers;
 18 using System.Configuration;
 19 using GMap.NET.Projections;
 20 using GMap.NET.Internals;
 21
 22 namespace fishingVesselUi
 23 {
 24     public partial class mainForm : Form
 25     {
 26         public mainForm()
 27         {
 28             InitializeComponent();
 29         }
 30
 31         #region 这个界面的初始化
 32
 33         private void mainForm_Load(object sender, EventArgs e)
 34         {
 35             pnlTopMenu.BackColor = Color.FromArgb(24, 144, 237);
 36             pnlLeftMenu.BackColor = Color.FromArgb(255, 137, 193, 240);
 37
 38             try
 39             {
 40                 //webBrowser1.Url = new Uri("http://www.2345.com");
 41                 //这个文件与可执行文件放在同一目录
 42                 //wbMap.Url = new Uri(Path.Combine(Application.StartupPath, "baiduMap.html"));
 43                 //wbMap.Navigate(Application.StartupPath + "/map.html");
 44
 45                 //wbMap.ObjectForScripting = this;
 46             }
 47             catch (Exception ex)
 48             {
 49                 MessageBox.Show(ex.Message, "异常", MessageBoxButtons.OK, MessageBoxIcon.Error);
 50             }
 51
 52             //当窗体发生改变时,pnl跟着一起改变,werbrowser随着pnl改变而改变
 53             //pnlMap.Width = this.Width;
 54             //pnlMap.Height = this.Height;
 55             //wbMap.Dock = DockStyle.Fill;
 56         }
 57         #endregion
 58
 59         //加载离线百度地图
 60         //private void gMap_Load(object sender, EventArgs e)
 61         //{
 62         //    gMap.MapProvider = GMapProviders.BaiduMap;               //使用百度地图
 63
 64         //    //地图的中心位置
 65         //    gMap.Position = new PointLatLng(double.Parse(ConfigurationManager.AppSettings["defaultLat"]),
 66         //                                    double.Parse(ConfigurationManager.AppSettings["defaultLng"]));
 67         //    gMap.MapProvider.Area = new RectLatLng(30.981178, 105.351914, 2.765142, 4.120995);
 68         //    gMap.BoundsOfMap = new RectLatLng(30.981178, 105.351914, 2.765142, 4.120995);
 69
 70         //    //离线模式
 71         //    gMap.Manager.Mode = AccessMode.CacheOnly;                       //缓存
 72         //    String mapPath = Application.StartupPath + "DataExp_Baidu.gmdb";
 73         //    GMap.NET.GMaps.Instance.ImportFromGMDB(mapPath);
 74
 75         //    gMap.DragButton = MouseButtons.Left;                            //左键拖拽地图
 76         //    gMap.Zoom = 13;                                                 //当前缩放
 77         //    gMap.MinZoom = 8;                                               //最小缩放
 78         //    gMap.MaxZoom = 24;                                              //最大缩放
 79         //}
 80
 81         #region 加载谷歌地形中文地图
 82
 83         private void gMap_Load(object sender, EventArgs e)
 84         {
 85             //bing混合模式
 86             //gMap.MapProvider = GMapProviders.BingHybridMap;
 87             gMap.MapProvider = GMapProviders.GoogleChinaTerrainMap;
 88
 89             //离线模式
 90             gMap.Manager.Mode = AccessMode.CacheOnly;
 91             String mapPath = Application.StartupPath + "DataExp_googleT.gmdb";
 92             GMap.NET.GMaps.Instance.ImportFromGMDB(mapPath);
 93
 94             //地图的中心位置
 95             //gMap.Position = new PointLatLng(39.185422, 112.252810);     //中心点的纬度,经度
 96             gMap.Position = new PointLatLng(39.51007, 124.17733);     //中心点的纬度,经度
 97
 98             //不显示中心十字点
 99             gMap.ShowCenter = false;
100
101             //左键拖拽地图
102             gMap.DragButton = MouseButtons.Left;
103             //最小缩放
104             gMap.MinZoom = 4;
105             //最大缩放
106             gMap.MaxZoom = 16;
107             //当前缩放
108             gMap.Zoom = 5;
109
110             //添加电子围栏功能(在地图上画多边形、圆形)      定义纬度经度坐标列表
111             GMapOverlay polygons = new GMapOverlay("polygons");
112             List<PointLatLng> points = new List<PointLatLng>();
113             points.Add(new PointLatLng(39.14502, 123.45209));
114             points.Add(new PointLatLng(39.24502, 123.55209));
115             points.Add(new PointLatLng(39.35502, 123.45209));
116             points.Add(new PointLatLng(39.24502, 123.05209));
117             points.Add(new PointLatLng(39.04502, 123.05209));
118             //points.Add(new PointLatLng(38.24502, 123.05209));
119             GMapPolygon polygon = new GMapPolygon(points, "pppp");
120             //对多边形进行样式设置
121             polygon.Stroke.DashStyle = System.Drawing.Drawing2D.DashStyle.Dash;     //线条为虚线
122             polygon.Stroke.Color = Color.Red;                                       //设置边线为红色
123             polygon.Fill = new SolidBrush(Color.FromArgb(0,Color.White));           //设置填充颜色为透明
124
125             polygons.Polygons.Add(polygon);
126             gMap.Overlays.Add(polygons);
127
128
129
130             //地图由三层组成 最上层:GMapMarker,中间层:GMapOverlay,最底层:GMapCtrols
131             GMapOverlay gMapOverlay = new GMapOverlay("markers");
132
133             //小船标记图标
134             Bitmap bitPink = new Bitmap("images/shipMarker0.png");
135             Bitmap bitRed = new Bitmap("images/shipRed0.png");
136             Bitmap bitYellow = new Bitmap("images/shipYellow0.png");
137
138             //第一个锚点坐标
139             PointLatLng startMarker = new PointLatLng(39.24502, 123.05209);        //路径起点
140             GMapMarker gMapMarker = new GMarkerGoogle(startMarker, bitPink);
141             //GMapMarker gMapMarker = new GMarkerGoogle(startMarker,GMarkerGoogleType.green);
142
143             gMapOverlay.Markers.Add(gMapMarker);                        //向图层中添加标记
144             gMap.Overlays.Add(gMapOverlay);                             //向控件中添加图层
145
146             //第二个锚点坐标
147             PointLatLng endMarker = new PointLatLng(39.107905, 123.42137);         //路径终点
148             gMapMarker = new GMarkerGoogle(endMarker, bitRed);
149             gMapOverlay.Markers.Add(gMapMarker);                        //向图层中添加标记
150             gMap.Overlays.Add(gMapOverlay);                             //向控件中添加图层
151
152
153             //第三个锚点坐标
154             PointLatLng endMarker1 = new PointLatLng(39.107905, 123.22137);         //路径终点
155             gMapMarker = new GMarkerGoogle(endMarker1, bitYellow);
156             gMapOverlay.Markers.Add(gMapMarker);                        //向图层中添加标记
157             gMap.Overlays.Add(gMapOverlay);                             //向控件中添加图层
158
159
160             //根据起止点start、end和当前的zoom查找路径
161             //MapRoute route = BingHybridMapProvider.Instance.GetRoute(startMarker, endMarker, false, false, (int)gMap.Zoom);
162             //MapRoute route = GoogleChinaTerrainMapProvider.Instance.GetRoute(startMarker, endMarker, false, false, (int)gMap.Zoom);
163             //if (route != null)
164             //{
165             //    //将路转换成线
166             //    GMapRoute r = new GMapRoute(route.Points, route.Name);
167             //    gMapOverlay.Routes.Add(r);                              //向图层中添加道路
168             //    gMap.Overlays.Add(gMapOverlay);                         //向控件中添加图层
169             //    r.Stroke.Width = 3;                                     //路径宽度
170             //    r.Stroke.Color = Color.Red;                             //路径颜色
171             //}
172         }
173         #endregion
174
175         #region 加载谷歌中文离线地图
176         //private void gMap_Load(object sender, EventArgs e)
177         //{
178         //    //bing混合模式
179         //    //gMap.MapProvider = GMapProviders.BingHybridMap;
180         //    gMap.MapProvider = GMapProviders.GoogleChinaMap;
181
182         //    //离线模式
183         //    gMap.Manager.Mode = AccessMode.CacheOnly;
184         //    String mapPath = Application.StartupPath + "DataExp.gmdb";
185         //    GMap.NET.GMaps.Instance.ImportFromGMDB(mapPath);
186
187         //    //地图的中心位置
188         //    gMap.Position = new PointLatLng(39.185422, 112.252810);     //中心点的纬度,经度
189
190         //    //不显示中心十字点
191         //    gMap.ShowCenter = false;
192
193         //    //左键拖拽地图
194         //    gMap.DragButton = MouseButtons.Left;
195         //    //最小缩放
196         //    gMap.MinZoom = 4;
197         //    //最大缩放
198         //    gMap.MaxZoom = 13;
199         //    //当前缩放
200         //    gMap.Zoom = 5;
201
202         //    //地图由三层组成 最上层:GMapMarker,中间层:GMapOverlay,最底层:GMapCtrols
203         //    GMapOverlay gMapOverlay = new GMapOverlay("markers");
204
205         //    //起点水滴标记
206         //    PointLatLng startMarker = new PointLatLng(40.187163, 116.18927);        //路径起点
207         //    //GMapMarker gMapMarker = new GMarkerGoogle(startMarker, GMarkerGoogleType.green);
208         //    GMapMarker gMapMarker = new GMarkerGoogle(startMarker, GMarkerGoogleType.green);
209         //    gMapOverlay.Markers.Add(gMapMarker);                        //向图层中添加标记
210         //    gMap.Overlays.Add(gMapOverlay);                             //向控件中添加图层
211
212         //    //终点水滴标记
213         //    PointLatLng endMarker = new PointLatLng(38.807905, 111.623768);         //路径终点
214         //    gMapMarker = new GMarkerGoogle(endMarker, GMarkerGoogleType.green);
215         //    gMapOverlay.Markers.Add(gMapMarker);                        //向图层中添加标记
216         //    gMap.Overlays.Add(gMapOverlay);                             //向控件中添加图层
217
218         //    //根据起止点start、end和当前的zoom查找路径
219         //    //MapRoute route = BingHybridMapProvider.Instance.GetRoute(startMarker, endMarker, false, false, (int)gMap.Zoom);
220         //    MapRoute route = GoogleChinaMapProvider.Instance.GetRoute(startMarker, endMarker, false, false, (int)gMap.Zoom);
221         //    if (route != null)
222         //    {
223         //        //将路转换成线
224         //        GMapRoute r = new GMapRoute(route.Points, route.Name);
225         //        gMapOverlay.Routes.Add(r);                              //向图层中添加道路
226         //        gMap.Overlays.Add(gMapOverlay);                         //向控件中添加图层
227         //        r.Stroke.Width = 3;                                     //路径宽度
228         //        r.Stroke.Color = Color.Red;                             //路径颜色
229         //    }
230         //}
231         #endregion
232
233         #region 加载百度离线地图
234
235         //private void gMap_Load(object sender, EventArgs e)
236         //{
237         //    //不显示中心十字点
238         //    this.gMap.ShowCenter = false;
239
240         //    //bing混合模式
241         //    //gMap.MapProvider = GMapProviders.BingHybridMap;
242         //    gMap.MapProvider = GMapProviders.BaiduMap;
243
244         //    //离线模式
245         //    gMap.Manager.Mode = AccessMode.CacheOnly;
246         //    String mapPath = Application.StartupPath + "DataExp_Baidu.gmdb";
247         //    GMap.NET.GMaps.Instance.ImportFromGMDB(mapPath);
248
249         //    //地图的中心位置
250         //    gMap.Position = new PointLatLng(39.185422, 112.252810);     //中心点的纬度,经度
251         //    //左键拖拽地图
252         //    gMap.DragButton = MouseButtons.Left;
253         //    //最小缩放
254         //    gMap.MinZoom = 4;
255         //    //最大缩放
256         //    gMap.MaxZoom = 13;
257         //    //当前缩放
258         //    gMap.Zoom = 5;
259
260         //    //地图由三层组成 最上层:GMapMarker,中间层:GMapOverlay,最底层:GMapCtrols
261         //    GMapOverlay gMapOverlay = new GMapOverlay("markers");
262
263         //    //起点水滴标记
264         //    PointLatLng startMarker = new PointLatLng(20.187163, 66.18927);        //路径起点
265         //    //GMapMarker gMapMarker = new GMarkerGoogle(startMarker, GMarkerGoogleType.green);
266         //    GMapMarker gMapMarker = new GMarkerGoogle(startMarker, GMarkerGoogleType.green);
267         //    gMapOverlay.Markers.Add(gMapMarker);                        //向图层中添加标记
268         //    gMap.Overlays.Add(gMapOverlay);                             //向控件中添加图层
269
270         //    //终点水滴标记
271         //    PointLatLng endMarker = new PointLatLng(18.807905, 61.623768);         //路径终点
272         //    gMapMarker = new GMarkerGoogle(endMarker, GMarkerGoogleType.green);
273         //    gMapOverlay.Markers.Add(gMapMarker);                        //向图层中添加标记
274         //    gMap.Overlays.Add(gMapOverlay);                             //向控件中添加图层
275
276         //    //根据起止点start、end和当前的zoom查找路径
277         //    //MapRoute route = BingHybridMapProvider.Instance.GetRoute(startMarker, endMarker, false, false, (int)gMap.Zoom);
278         //    MapRoute route = GoogleChinaMapProvider.Instance.GetRoute(startMarker, endMarker, false, false, (int)gMap.Zoom);
279         //    if (route != null)
280         //    {
281         //        //将路转换成线
282         //        GMapRoute r = new GMapRoute(route.Points, route.Name);
283         //        gMapOverlay.Routes.Add(r);                              //向图层中添加道路
284         //        gMap.Overlays.Add(gMapOverlay);                         //向控件中添加图层
285         //        r.Stroke.Width = 3;                                     //路径宽度
286         //        r.Stroke.Color = Color.Red;                             //路径颜色
287         //    }
288         //}
289         #endregion
290
291     }
292 }

转载于:https://www.cnblogs.com/ttxbc/p/7462972.html

GMap.Net 实现离线地图相关推荐

  1. GMAP.NET ---生成离线地图

    生成离线地图 如何生成离线地图,也就是Data.gmdb. 1. 选择一个地图厂商(例如百度),并定位你的位置(例如重庆) 2. 按中Alt键并使用鼠标框选,会用蓝色区域表示,点击prefetch 3 ...

  2. (转)深入理解最强桌面地图控件GMAP.NET ---离线地图

    这章会介绍GMAP.NET的核心功能之一:离线地图.这个功能可以满足很多政府项目.保密项目.或者由于种种原因不能上网的项目的需求. 本章主要分成三个方面介绍:演示.生成离线地图.Demo代码. 一.演 ...

  3. 深入理解最强桌面地图控件GMAP.NET ---离线地图

    转 http://www.cnblogs.com/enjoyeclipse/archive/2013/01/29/2882254.html 这章会介绍GMAP.NET的核心功能之一:离线地图.这个功能 ...

  4. 入理解最强桌面地图控件GMAP.NET ---离线地图

    http://www.cnblogs.com/enjoyeclipse/archive/2013/01/31/2882254.html 介绍GMAP.NET的核心功能之一:离线地图.这个功能可以满足很 ...

  5. GMap.net 离线地图问题

    转载自百度知道:请问一下,使用Gmap.net 怎么导入离线地图我使用[http://www.cnblogs.com/enjoyeclipse/archive/2013/01/29/2882254.h ...

  6. Gmap.net 怎么导入离线地图

    我使用[http://www.cnblogs.com/enjoyeclipse/archive/2013/01/29/2882254.html]所提供的方式导出地图数据 但是在[C:\Users\用户 ...

  7. C# .NET winform地图开发GMap离线地图在线地图自建地图服务器

    目录 添加GMap引用 下载GMap demo 尝试一个测试程序 下载离线地图 使用离线模式读取地图 加载高德地图 获取WMTS 坐标系转化 GMap常用地图操作 自建地图服务器 添加GMap引用 下 ...

  8. 基于winform的GIS离线地图

    基于winform的离线地图项目 1.下载GMap(一个国外开源控件,codeplex有源码),不了解的百度一下, 2.项目引入GMap.NET.Core和GMap.NET.WindowsForms ...

  9. java gis离线地图_java离线地图web GIS制作

    因为项目需求,要做一个web地图,之前做过高德的在线地图,它提供了一系列的API,并且由于是国产的,所以开发起来比较容易,现在由于项目是内网使用的,所以需要使用离线地图,由此便开始了: Web GIS ...

最新文章

  1. TextView 添加Onclick 无效
  2. debian 语言配置
  3. SVN版本控制如何删除文件或者文件夹?
  4. 大话设计模式(十一 三层架构,分层开发)
  5. linux内核3.6版本及以下的bug引发的故障--cpu使用率100%
  6. 计算机组成与设计第五版英文_南京大学计算机考研信息汇总
  7. 405 not allowed怎么解决_英语口语:“您拨叫的用户不在服务区”这类电话常用语怎么说...
  8. Tomcat端口冲突
  9. React 系列之 怎么学最快速有效
  10. Linux系统可卸载内核模块完全指南(上)
  11. HTML常用特殊符号集
  12. 机器学习(ML)在材料领域应用专题
  13. vant 带关闭按钮div_[已解决]vant-ui源码vant-button的几个疑问
  14. 传播正能量——做一个快乐的程序员
  15. 1230k倍区间,关于cnt[0]赋值为1的解释
  16. 【MyBatis】| MyBatis的缓存
  17. 初级算法:只出现一次的数字
  18. Unity DrawCall优化
  19. 一边是大葱价格飞涨,一边是万斤柑橘烂地里,其中原因令人唏嘘
  20. 产业观察 | 区块链与农业结合迸发新火花,助推农业现代化建设

热门文章

  1. 使用Vue导出word(纯前端,异步处理图片)
  2. OpenCV入门笔记-更新篇
  3. 如何在庞大的ip地址库中快速定位到对应的ip地址所对应的归属地?
  4. 【读书联动】认知觉醒:开启自我改变的原动力
  5. keepalive+nginx高可用K8S集群部署
  6. busybox v1.22.1(debian 1:1.22.0-19) built-in shell(ash)解决方案
  7. 叁拾伍- Django Websocket 绝望之旅(dwebsocket 以及 channels)
  8. Java队列的poll,peek,element的区别
  9. 魔高一丈道高一尺,开放接口安全性设计
  10. 使用GridView使用类似电影海报宣传页面