c#导入地图(一)--地图Gmap的使用

article/2025/11/11 7:14:15

目录

  • 导入地图(联网的话可不进行此步骤)
    • 下载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();

http://chatgpt.dhexx.cn/article/VqciddgC.shtml

相关文章

WPF使用GMap.net框架开发地图应用

GMap.NET有两个版本&#xff0c;分别是WinForm和WPF的版本&#xff0c;WinForm版本的教程很多。这次主要介绍的WPF版本的操作。 要下载GMap.NET请点击这里&#xff0c;这个最好下载下来&#xff0c;可以参考里面的Demo来学习。下载下来后&#xff0c;用visual studio打开Sourc…

模块测试(一)----c#控制html中的数据(GMap)

项目地址: https://github.com/SCFMVP/final_01 一. 配置GMap 我们先去官网下载GMap的工程文件: https://archive.codeplex.com/?pgreatmaps 然后我们我们编译GMap.NET.WindowsForms工程, 生成GMap.NET.Core.dll和GMap.NET.WindowsForms.dll 然后添加到我们的工程中.(PS: 这…

C# WinForm开发 GMap离线地图

一、概述 GMap.NET是一个强大、免费、跨平台、开源的.NET控件&#xff0c;它在Windows Forms和WPF环境中能够通过Google, Yahoo!, Bing, OpenStreetMap, ArcGIS, Pergo, SigPac等实现路径规划、地理编码以及地图展示功能&#xff0c;并支持缓存和运行在Mobile环境中。 二、步…

GoFrame的gmap相比Go原生的map,天然支持排序和有序遍历!?

大家好&#xff0c;我是阳哥。内容比较硬核&#xff0c;建议先收藏再观看。 我也在B站发布了这期内容的视频版&#xff0c;视频相比文章看起来确实更通俗易懂。 如果你是初学者建议先看视频&#xff1a;欢迎大家点击这个链接观看。 觉得不错&#xff0c;欢迎关注、三连一波。谢…

Gmap安装使用

最近使用c#做了一个地面站&#xff0c;需要用到地面站&#xff0c;在论文里看到好多人都是用的Gmap&#xff0c;所以今天写个博客&#xff0c;记录一下自己遇到的问题。 1.下载 下载地址&#xff1a;https://archive.codeplex.com/?pgreatmaps 2.编译 大家都看到&#xff…

WPF GMap使用高德地图

文章目录 前言一、Nuget下载Gmap二、代码1.添加类2.加载高德地图 总结 前言 近日在项目中用到了GMap&#xff0c;并且Gmap中使用了高德地图&#xff0c;特此记录一下。 一、Nuget下载Gmap 在Nuget中搜索GMap&#xff0c;选择GMap.NET.Presentatiom进行下载安装。&#xff08;…

GMap.NET使用教程

原文地址&#xff1a;GMap.NET使用教程 GMap.NET是一个强大、免费、跨平台、开源的.NET控件&#xff0c;它在Windows Forms和WPF环境中能够通过Google, Yahoo!, Bing, OpenStreetMap, ArcGIS, Pergo, SigPac等实现路径规划、地理编码以及地图展示功能&#xff0c;并支持缓存和运…

基于GMap.NET库实现的Windows桌面地图工具软件分享

0 前言 由于工作中经常和地图、GPS坐标转换、GPS轨迹查看等内容相关&#xff0c;经常要借助一些在线网站和工具来查看地图和位置等&#xff0c;在一次偶然的机会中了解到一个GMap.NET开源的桌面地图库和基于GMap.NET实现的MapDownloader地图下载工具&#xff0c;于是也想实现一…

GMap.NET入门详细教程【4】--------为控件添加事件,在鼠标单击时打点

GMap.NET入门 下载 GMap.NET&#xff0c;并在VS中添加GMap.NET控件初始化并加载一张地图添加标记点、线、多边形为控件添加事件&#xff0c;在鼠标单击时打点 快捷添加 选中窗体中的GMap控件&#xff0c;并查看内置事件 在这里&#xff0c;通过使用MouseDown和DoubleClick事…

GMap.net控件学习记录

主要参考网址 http://www.cnblogs.com/luxiaoxun/p/3802559.html http://www.cnblogs.com/luxiaoxun/p/3463250.html http://blog.csdn.net/onepiecehuiyu/article/details/19159565 GMap官方网址 http://greatmaps.codeplex.com/ WGS84&#xff0c;GCJ02&#xff0c;BD09坐标转…

Gmap使用说明,通过输入经纬度查询位置

由于本人对于Gmap的使用时间不长&#xff0c;有很多东西不是太熟悉&#xff0c;所以本人的代码有借鉴的部分&#xff0c;如有发现侵权&#xff0c;还请及时联系本人。 我目前已经基本实现了&#xff0c;地图的放大、缩小、平移的功能。完成了鼠标单击标点&#xff0c;输入经纬度…

GMap.net 自定义Marker

说明 自定义Marker部分内容来源于互联网&#xff0c;具体来源不记得了&#xff0c;若有人发现此处没注明出处&#xff0c;请海涵&#xff01; nuget包 GMapMarkerArrow using GMap.NET.WindowsForms; using System; using System.Collections.Generic; using System.Linq; usin…

C#基于开源地图GMap的开发示例

一.介绍 本示例程序是我在做项目前的探索示例。示例中测试了一些简单的功能&#xff0c;满足了我项目中的基本功能。更进一步的开发&#xff0c;有待继续研究。 二.项目源代码地址 源代码下载地址 三.项目讲解 1.引用GMap的dll文件 利用GMap开发&#xff0c;需要用到两个…

GMAP一款比对工具用于ALLHiC构建等位基因表

在ALLHiC使用过程中需要构建Allele.ctg.table&#xff0c;用于过滤多倍体基因组中因等位序列相似引起的HiC噪音的必要输入。官网提供了两种办法&#xff0c;一种是blastn&#xff0c;需要对草图基因组进行注释&#xff0c;这个过程挺麻烦的&#xff0c;在最下边看到了也可以使用…

Gmap使用心得分享C#-winform-Gmap

目录 一、Gmap库引用 1.下载Gmap引用库 2.Visual Studio添加项目引用 &#xff08;1&#xff09;打开项目后点击项目后添加引用 ​ &#xff08;2&#xff09;浏览本地库 &#xff08;3&#xff09;添加引用即可 二、Gmap使用流程 1.添加GmapControl 2.图…

基于GMap.Net的地图解决方案

一 地图的加载与显示 关于GMap的介绍与使用可以看我以前的文章: GMap.Net开发之在WinForm和WPF中使用GMap.Net地图插件 GMap.Net是.Net下一个地图控件,可以基于Http协议加载各个公司的地图,如Google,Bing,ArcGIS的,主要原理是通过解析各个公司的地图服务的URL,传入相应的…

Jersey框架常用注解3:媒体类型注解@Consumes和@Produces

Consumes 指定http请求的MIME类型&#xff0c;默认是*/*&#xff0c;表示任意的MIME类型。该注解的值是数组类型&#xff0c;支持多个MIME类型&#xff0c;可以使用MediaType来指定MIME类型。 Produces 指定http响应的MIME类型&#xff0c;默认是*/*&#xff0c;表示任意的M…

12.@RequestMapping中的consumes属性和produces属性

请求头header中很重要的两个参数:Accept:text/html只在响应中存在,表示当前请求希望服务器将来返回的数据类型是text/htmlContent-Type:application/json既可以出现在请求中,也可以出现在响应中,例如响应中代表服务器响应的是什么数据类型响应中response.setContentType("…

springmvc @RequestMapping注解中produces以及consumes属性的含义

http协议基础知识 首先需要了解什么叫MediaType&#xff08;媒体类型&#xff09;&#xff1f; 通俗来说&#xff0c;在http协议中&#xff0c;用来表示传输内容的格式就是MediaType&#xff0c;比如text/html&#xff0c;application/json等&#xff0c;其中text代表介质&am…

AJAX、异步和同步区别

1. 概念&#xff1a; ASynchronous JavaScript And XML (异步的JavaScript 和 XML) 异步和同步区别 2.Ajax作用&#xff1a; Ajax 是一种在无需重新加载整个网页的情况下&#xff0c;能够更新部分网页的技术。通过在后台与服务器进行少量数据交换&#xff0c;Ajax 可以使网页…