目录

  • 导入地图(联网的话可不进行此步骤)
    • 下载GMap及离线地图
  • 开始开发
    • 新建winform工程
    • 添加程序包
    • 导入地图
    • 鼠标移动获取经纬度
    • 在地图上添加标记
    • 在地图上添加连线
    • 在地图上添加多边形
    • 在地图上添加图片
    • 在地图上清除图层

导入地图(联网的话可不进行此步骤)

下载GMap及离线地图

内容包含GMap源码以及地图下载器(用于生成GMDB格式离线地图文件)

下载地址:https://archive.codeplex.com/?p=greatmaps(地址无法找到),我翻资源找到了(链接:https://pan.baidu.com/s/1AFGzkobdj_cIBfEYtC1lQA?pwd=bbj0
提取码:bbj0)
或者私信告诉我邮箱,给你们发。
打开工程:

VS打开报警告没关系,直接继续
运行软件:

找到合适的地图,很多地图是无法显示的,我用的这个地图:

按住alt,鼠标左键框选需要下载的地图,进行地图下载:

如下,选择“是”就会下载对应Zoom的地图内容,下载完成后就会弹出新一轮的细化,选择下载的Zoom越多,地图占用存储空间越大,看个人需求,我是下载到10,会比较慢。

不需要细化之后就点击否。进行导出gmdb文件:

开始开发

新建winform工程

添加程序包

建立WindowsForms工程后,右键工程->管理NuGet包->下载安装GMap.NET.WindowsForms


成功后可以看到工具箱多了控件:

导入地图

拖动控件GMapControl到窗体,并将之前生成的地图文件放到自己定义的目录下。
输入代码

string mapPath = Application.StartupPath + "\\ChinaMap1To10.gmdb";//地图路径
GMap.NET.GMaps.Instance.ImportFromGMDB(mapPath);//如果使用内部包,直接不要前面这两句
gMapControl1.Manager.Mode = AccessMode.ServerAndCache;
gMapControl1.MapProvider = GMapProviders.OpenCycleMap;
gMapControl1.MinZoom = 4;      //最小比例
gMapControl1.MaxZoom = 18;     //最大比例
gMapControl1.Zoom = 10;        //当前比例
gMapControl1.ShowCenter = false;//不显示中心十字标记
this.gMapControl1.DragButton = System.Windows.Forms.MouseButtons.Left;//左键拖拽地图
gMapControl1.MouseWheelZoomType = MouseWheelZoomType.MousePositionAndCenter;//鼠标缩放模式
gMapControl1.Position = new PointLatLng(28.21,113);//地图中心坐标,(纬度,经度)

ps:直接使用内部地图包比较推荐,感觉demo的作用更像是让你学习怎么使用Gmap,而不是用来下载地图包。

鼠标移动获取经纬度

添加MouseMove事件

private void gMapControl1_MouseMove(object sender, MouseEventArgs e)
{PointLatLng point = gMapControl1.FromLocalToLatLng(e.Location.X, e.Location.Y);//获取鼠标位置(FromLocalToLatLng是将数值转换成坐标  )label1.Text = point.Lat.ToString("0.000000");label2.Text = point.Lng.ToString("0.000000");}

在地图上添加标记


代码:

public GMapOverlay marker_Overlay;
marker_Overlay = new GMapOverlay("marker_Overlay"); //创建一个名为“marker_Overlay”的图层
gMapControl1.Overlays.Add(marker_Overlay);
DrawMarker(marker_Overlay,new PointLatLng(28.221, 113.55377));
public void DrawMarker(GMapOverlay overlay, PointLatLng point)
{//创建标记,并设置位置及样式GMapMarker marker = new GMarkerGoogle(point, GMarkerGoogleType.blue_small);//将标记添加到图层overlay.Markers.Add(marker);//将图层添加到地图this.gMapControl1.Overlays.Add(overlay);//鼠标标记点提示框ToolTipmarker.ToolTip = new GMapToolTip(marker);//Brush tooltipBackColor = new SolidBrush(Color.Transparent);//颜色获取,可用于填充背景marker.ToolTipText = "坐标("+ point.Lng +","+ point.Lat + ")";marker.ToolTip.Font = new Font("微软雅黑", 11);marker.ToolTip.Fill = new SolidBrush(Color.FromArgb(100, Color.Black));marker.ToolTip.Foreground = Brushes.White;marker.ToolTip.TextPadding = new Size(20, 20);//marker.ToolTipMode= MarkerTooltipMode.Always;//标注一直显示marker.ToolTip.Offset = new System.Drawing.Point(marker.Offset.X - (int)((float)marker.ToolTipText.Length / 2) * 15, marker.Offset.Y + 28);//显示位置}

在地图上添加连线

//起点水滴标记
PointLatLng start = new PointLatLng(28.3, 112.5337);  //路径起点
DrawMarker(marker_Overlay, start);      //是添加标记的函数//终点水滴标记
PointLatLng end = new PointLatLng(28.81, 113.557);   //路径终点
DrawMarker(marker_Overlay, end);//是添加标记的函数//根据起止点start、end和当前的zoom查找路径
List<PointLatLng> points = new List<PointLatLng>() { start, end };
GMapRoute route = new GMapRoute(points,"");
route.Stroke = new Pen(Color.Red, 3); // 折线颜色,线宽
marker_Overlay.Routes.Add(route);

在地图上添加多边形

GMapOverlay polygon_Overlay = new GMapOverlay("polygon_Overlay");
this.gMapControl1.Overlays.Add(polygon_Overlay);
// 多边形的顶点
List<PointLatLng> points = new List<PointLatLng>();
points.Add(new PointLatLng(28, 113));
points.Add(new PointLatLng(28.1, 112.99));
points.Add(new PointLatLng(28.3, 113.66));
points.Add(new PointLatLng(28.1, 113.88));GMapPolygon polygon = new GMapPolygon(points, "");
polygon.Fill = new SolidBrush(Color.FromArgb(50, Color.Red));
polygon.Stroke = new Pen(Color.Red, 1);
polygon_Overlay.Polygons.Add(polygon);

在地图上添加图片

GMapOverlay img_Overlay = new GMapOverlay("polygon_Overlay");
this.gMapControl1.Overlays.Add(img_Overlay);Bitmap bitmap = Bitmap.FromFile(@"E:\yuanyuxin\工作文档\升级压裂软件系统\警告.png") as Bitmap;//创建标记,并设置位置及样式
GMapMarker marker = new GMarkerGoogle(new PointLatLng(28, 113), bitmap);
//将标记添加到图层
img_Overlay.Markers.Add(marker);
//将图层添加到地图
this.gMapControl1.Overlays.Add(img_Overlay);//鼠标标记点提示框ToolTip
marker.ToolTipText = "报警信息";
marker.ToolTip.Fill = new SolidBrush(Color.FromArgb(100, Color.Black));
marker.ToolTip.Foreground = Brushes.White;
marker.ToolTip.TextPadding = new Size(20, 20);

在地图上清除图层

overlay.Markers.Clear();

c#导入地图(一)--地图Gmap的使用相关推荐

  1. (转)深入理解最强桌面地图控件GMAP.NET --- 原理篇

    前几篇介绍了一些国内地图的案例, 深入理解最强桌面地图控件GMAP.NET --- SOSO地图 深入理解最强桌面地图控件GMAP.NET --- 百度地图 我们以Google地图为例,这章介绍下地图 ...

  2. 深入理解最强桌面地图控件GMAP.NET --- SOSO地图

    转 http://www.cnblogs.com/enjoyeclipse/archive/2013/01/15/2859028.html 前三篇介绍了GMAP.NET的一些基本功能以及如何集成一个百 ...

  3. (转)深入理解最强桌面地图控件GMAP.NET --- SOSO地图

    前三篇介绍了GMAP.NET的一些基本功能以及如何集成一个百度地图. 深入理解最强桌面地图控件GMAP.NET --- 初识 深入理解最强桌面地图控件GMAP.NET --- 初用 深入理解最强桌面地 ...

  4. 免费批量导入生成sitemap地图的软件

    批量导入生成sitemap地图的工具,怎么批量导入域名生成sitemap地图工具.今天给大家分享一款免费批量导入域名自动生成sitemap地图的工具,不仅支持批量生成百度/谷歌sitemap地图,同时 ...

  5. Tableau学习笔记(进阶)——(7)多边形地图和背景图地图:设置地理信息(自定义地图码导入、设置地图源)

    上一小节链接. 目录 1.多边形地图 1.1 多边形地图的相关概念 1.2 英国国家公园多边形地图 2.设置地理信息 2.1 自定义地理码导入 (1)扩展现有角色: (2)新加角色 (3)添加新分层结 ...

  6. Tableau 七、多边形地图和背景图地图:设置地理信息(自定义地图码导入、设置地图源)

    1.多边形地图 多边形地图是高级的填充地图. 1.1多边形地图的相关概念 多边形地图是对填充地图的一种补充,基于地理编码和数据文件绘制多边形区域,实现自定义的填充地图. 1.2英国国家公园多边形地图 ...

  7. Tableau 第七天 多边形地图和背景地图:设置地理信息(自定义地图码导入、设置地图源)

    关注微信公共号:小程在线 关注CSDN博客:程志伟的博客 视频地址:https://www.bilibili.com/video/BV1E4411B7ef?p=7 第七天 21.多边形地图 21.1 ...

  8. 深入理解最强桌面地图控件GMAP.NET --- 百度地图

    转 http://www.cnblogs.com/enjoyeclipse/archive/2013/01/14/2859026.html 前两篇介绍了GMAP.NET的一些基本功能和如何在自己的项目 ...

  9. 深入理解最强桌面地图控件GMAP.NET --- 原理篇

    转 http://www.cnblogs.com/enjoyeclipse/archive/2013/01/18/2865700.html 前几篇介绍了一些国内地图的案例, 深入理解最强桌面地图控件G ...

  10. 深入理解最强桌面地图控件GMAP.NET ---高德地图

    前一篇介绍了GMAP.NET的理论基础,这篇介绍如何集成高德地图.高德地图自从为IOS6提供地图后,目前已经被大众所熟知了. 在我集成国内地图的经验来看,也是最符合墨卡托投影法的. 前面的相关文章链接 ...

最新文章

  1. JMC | 人工智能在药物合成中的当前和未来作用(1)
  2. Alpha多样性稀释曲线rarefraction curve还不会画吗?快看此文
  3. leetcode算法题--最长的斐波那契子序列的长度
  4. 技术分享:NodeJS中的Events(事件触发器)讲解
  5. jquery 检查 金钱类型
  6. python基础逻辑判断语句(九)
  7. 【PHP】安装wampserver3.1.19后apache无法启动问题
  8. hmcl启动器java下载_hmcl启动器下载
  9. uni-app开始时间结束时间(结束时间大于开始时间)picker编写
  10. 发一些乙醇原创的资料
  11. 0基础怎么画出好看的水彩画美术集水彩教程入门级教程
  12. 一份Java面试宝典「Java核心知识点」囊括JVM,Spring等29个技术
  13. 离职前一定要删除这几个文件,不然你的微信聊天记录全被别人看了
  14. Idea 合并分支只选取部分文件的办法
  15. 设置单选框radio不可选(禁用)
  16. vb6.0连接postgresql 13
  17. 制作STG游戏的初步构思
  18. PPO Algorithm
  19. Python项目——飞机大战!
  20. foxmail 发不出邮件,被电脑管家云查杀引擎检测出带有病毒:Win32.Trojan.Agent.hryf ...

热门文章

  1. u盘解写保护软件usbmon
  2. Unity3d 2019.3 通过 Ctrl 键让移动是固定步距
  3. Word2010中自动尾注添加参考文献
  4. SQL Server 容易忽略的错误
  5. Android RecyclerView之RecycledViewPool、SortedListAdapter
  6. 会话层,表示层和应用层
  7. 中秋节的广西甘蔗——智蔗见智·向新而生
  8. 600多万行的代码,苦撑12年的“乱项目”长这样
  9. 还在为那几千的工资起早贪黑,学好大数据年薪30万不是梦
  10. [概念] 风险识别工具 - 影响图(Influence Diagram)