GMap.NET控件使用

article/2025/11/11 7:10:54
                                                                                 GMap.NET控件使用

GMap.NET是一个.net控件,开源、跨平台、免费。地图来源广泛。可以用于WinForm、WPF、WM。

....................................................................................................

要使用这个控件,就必须理解以下几点:

1. What is the map control (GMapControl)? This is the control which renders the map. 

2. What is an Overlay (GMapOverlay)? This is a layer on top of the map control. You can have several layers on top of a map, each layer representing, say, a route with stops, a list of stores etc.

3. What are Markers (GMapMarker)? These are the points on a layer, each representing a specific geo location (Lat,Lon) e.g. each drop point on a route.

4. What is a route (GMapRoute)? This is the path or direction between two or more points.

5. WTF are tiles? – well here is something to read…Bing Maps Tile System.

GMap.NET <wbr>学习(一)添加marker和polygon


1.向Windows Form添加一个GMap控件

直接把控件从工具箱拖到form上,调整大小,然后把默认名字GMapControl1改为gmap

GMap.NET <wbr>学习(一)添加marker和polygon

选择控件,选择属性,打开属性面板,除了控件的通用属性外,还有GMap特定的属性,
GMap.NET <wbr>学习(一)添加marker和polygon

CanDragMap-----鼠标右键拖动地图

MarkersEnabled---显示markers

PolygonsEnabled---显示polygon

ShowTileGridLines---显示坐标格网

Zoom, MinZoom, MaxZoom---Google地图的缩放水平从0-18,0是全球范围,18是街道级别,全国级别的话,zoom设为5比较合适。

2.初始化地图

给form添加一个onLoad事件,写入如下代码:

private void Form1_Load(object sender, EventArgs e) 

 // Initialize map: 
gmap.MapProvider = GMap.NET.MapProviders.BingMapProvider.Instance; 
GMap.NET.GMaps.Instance.Mode = GMap.NET.AccessMode.ServerOnly; 
gmap.SetCurrentPositionByKeywords("Maputo, Mozambique"); 
}
现在运行就可以看到地图了。如果无法用鼠标右键拖拽地图和滚轮缩放,检查控件属性设置是否正确。

有如下四种方式设置地图的默认位置:

gmap.SetCurrentPositionByKeywords(“country”) - USA

gmap.SetCurrentPositionByKeywords(“state, country”) – Berlin, Germany

gmap.SetCurrentPositionByKeywords(“province, country”) – Alberta, Canada

gmap.Position = new PointLatLng(-25.971684,32.589759);
3.地图提供器 Map Providers
GMap.NET  library的神奇之处在于不仅仅可以利用Google Maps,还有其他地图可以利用,GMap可以调用大量的地图源,并且接口都封装在内部。以下是地图提供器:

 

CloudMadeMapProvider

GoogleMapProvider – map provider for Google Maps;有很多种类型的地图

OpenCycleMapProvider

OpenStreetMapProvider

WikiMapiaMapProvider

YahooMapProvider

any marker and polygon code you write for GMap.NET will work with any of the providers. Awesome!
 
4.添加图标 Adding markers
markers添加到地图上面的那个图层里,称为overlays,可以在一个overlay里添加任意多的markers,然后再把这个 overlay添加到添加到地图上。overlay可以根据需要隐藏或显示。

以下代码添加一个名为markers的overlay到地图上,这个overlay里只有一个marker。

GMapOverlay markersOverlay = new GMapOverlay("markers");  //new一个overlays对象
GMarkerGoogle marker = new GMarkerGoogle(new PointLatLng(-25.966688, 32.580528), GMarkerGoogleType.green);
markersOverlay.Markers.Add(marker); 
gmap.Overlays.Add(markersOverlay);

GMap.NET <wbr>学习(一)添加marker和polygon

    首先,创建一个overlay实例,new的时候名称是可选参数。可以在其他地方通过名字引用这个overlay,也可以直接引用这个overlay实例本身。
    然后,创建一个GMarkerGoogle实例,new这个实例的时候,需要2个参数,第一个是位置(也即 PointLatLng  实例  ),一个是marker类型。marker类型是一组图标图片,这个在Google Map API里可以找到。也可以自己提供一个Bitmap实例作为marker图片。
GMarkerGoogle marker = new GMarkerGoogle(new PointLatLng(-25.966688, 32.580528)new Bitmap("c:\\images\\mymarker.png");
最后,把marker添加到overlay,再把overlay添加到map。这些marker可以和任何map provider兼容。
5.添加区域 Adding polygons
以下代码创建一个overlay,并在其中添加一个四边形
 
GMapOverlay polyOverlay = new GMapOverlay("polygons"); 
List<PointLatLng> points = new List<PointLatLng>(); 
points.Add(new PointLatLng(-25.969562,32.585789));
points.Add(new PointLatLng(-25.966205,32.588171)); 
points.Add(new PointLatLng(-25.968134,32.591647)); 
points.Add(new PointLatLng(-25.971684,32.589759)); 
GMapPolygon polygon = new GMapPolygon(points, "mypolygon");
polygon.Fill = new SolidBrush(Color.FromArgb(50, Color.Red));
polygon.Stroke = new Pen(Color.Red1); 
polyOverlay.Polygons.Add(polygon); 
gmap.Overlays.Add(polyOverlay);
首先创建一个新的overlay,然后,创建一个装多边形顶点的list,使用这个list创建一GMapPolygon实例,然后用SolidBrush告诉这个polygon如何绘制自己,给笔画选定pen的粗细颜色,最后,把polygon添加到overlay,再把overlay添加到map。
结论:
tip:
如果marker不显示,先查看下属性面板里MarkersEnabled是否设置为true
不联网的话,也可以用离线地图,添加如下代码:
GMap.NET.GMaps.Instance.Mode = GMap.NET.AccessMode.CacheOnly;
代码里要添加引用的命名空间:
using GMap.NET;
using GMap.NET.WindowsForms;
using GMap.NET.WindowsForms.Markers;
using GMap.NET.WindowsForms.ToolTips;
参考:GMap.NET控件使用



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

相关文章

GMap.net 涉及标绘源码

下载地址 下载地址https://download.csdn.net/download/qq_17371831/48961706https://download.csdn.net/download/qq_17371831/48961706 其他类源码 public class PointLatLngComparer : IEqualityComparer<PointLatLng>{public bool Equals(PointLatLng x, PointLatLng…

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

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

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("…