GMap.Net 实现离线地图
要求:实现离线地图,地图上有小船标志,还有电子围栏的功能用来区分该小船是否在电子围栏范围内 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 实现离线地图相关推荐
- GMAP.NET ---生成离线地图
生成离线地图 如何生成离线地图,也就是Data.gmdb. 1. 选择一个地图厂商(例如百度),并定位你的位置(例如重庆) 2. 按中Alt键并使用鼠标框选,会用蓝色区域表示,点击prefetch 3 ...
- (转)深入理解最强桌面地图控件GMAP.NET ---离线地图
这章会介绍GMAP.NET的核心功能之一:离线地图.这个功能可以满足很多政府项目.保密项目.或者由于种种原因不能上网的项目的需求. 本章主要分成三个方面介绍:演示.生成离线地图.Demo代码. 一.演 ...
- 深入理解最强桌面地图控件GMAP.NET ---离线地图
转 http://www.cnblogs.com/enjoyeclipse/archive/2013/01/29/2882254.html 这章会介绍GMAP.NET的核心功能之一:离线地图.这个功能 ...
- 入理解最强桌面地图控件GMAP.NET ---离线地图
http://www.cnblogs.com/enjoyeclipse/archive/2013/01/31/2882254.html 介绍GMAP.NET的核心功能之一:离线地图.这个功能可以满足很 ...
- GMap.net 离线地图问题
转载自百度知道:请问一下,使用Gmap.net 怎么导入离线地图我使用[http://www.cnblogs.com/enjoyeclipse/archive/2013/01/29/2882254.h ...
- Gmap.net 怎么导入离线地图
我使用[http://www.cnblogs.com/enjoyeclipse/archive/2013/01/29/2882254.html]所提供的方式导出地图数据 但是在[C:\Users\用户 ...
- C# .NET winform地图开发GMap离线地图在线地图自建地图服务器
目录 添加GMap引用 下载GMap demo 尝试一个测试程序 下载离线地图 使用离线模式读取地图 加载高德地图 获取WMTS 坐标系转化 GMap常用地图操作 自建地图服务器 添加GMap引用 下 ...
- 基于winform的GIS离线地图
基于winform的离线地图项目 1.下载GMap(一个国外开源控件,codeplex有源码),不了解的百度一下, 2.项目引入GMap.NET.Core和GMap.NET.WindowsForms ...
- java gis离线地图_java离线地图web GIS制作
因为项目需求,要做一个web地图,之前做过高德的在线地图,它提供了一系列的API,并且由于是国产的,所以开发起来比较容易,现在由于项目是内网使用的,所以需要使用离线地图,由此便开始了: Web GIS ...
最新文章
- TextView 添加Onclick 无效
- debian 语言配置
- SVN版本控制如何删除文件或者文件夹?
- 大话设计模式(十一 三层架构,分层开发)
- linux内核3.6版本及以下的bug引发的故障--cpu使用率100%
- 计算机组成与设计第五版英文_南京大学计算机考研信息汇总
- 405 not allowed怎么解决_英语口语:“您拨叫的用户不在服务区”这类电话常用语怎么说...
- Tomcat端口冲突
- React 系列之 怎么学最快速有效
- Linux系统可卸载内核模块完全指南(上)
- HTML常用特殊符号集
- 机器学习(ML)在材料领域应用专题
- vant 带关闭按钮div_[已解决]vant-ui源码vant-button的几个疑问
- 传播正能量——做一个快乐的程序员
- 1230k倍区间,关于cnt[0]赋值为1的解释
- 【MyBatis】| MyBatis的缓存
- 初级算法:只出现一次的数字
- Unity DrawCall优化
- 一边是大葱价格飞涨,一边是万斤柑橘烂地里,其中原因令人唏嘘
- 产业观察 | 区块链与农业结合迸发新火花,助推农业现代化建设
热门文章
- 使用Vue导出word(纯前端,异步处理图片)
- OpenCV入门笔记-更新篇
- 如何在庞大的ip地址库中快速定位到对应的ip地址所对应的归属地?
- 【读书联动】认知觉醒:开启自我改变的原动力
- keepalive+nginx高可用K8S集群部署
- busybox v1.22.1(debian 1:1.22.0-19) built-in shell(ash)解决方案
- 叁拾伍- Django Websocket 绝望之旅(dwebsocket 以及 channels)
- Java队列的poll,peek,element的区别
- 魔高一丈道高一尺,开放接口安全性设计
- 使用GridView使用类似电影海报宣传页面