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

article/2025/11/11 7:32:57

GMap.NET入门

  1. 下载 GMap.NET,并在VS中添加GMap.NET控件
  2. 初始化并加载一张地图
  3. 添加标记点、线、多边形
  4. 为控件添加事件,在鼠标单击时打点

快捷添加

选中窗体中的GMap控件,并查看内置事件
在这里插入图片描述
在这里,通过使用MouseDown和DoubleClick事件演示在鼠标单击时向地图插入一个标记点。

  1. 首先双击GMap控件,在gMapControl1_Load中初始化一张地图
     	    this.gMapControl1.Manager.Mode = AccessMode.ServerAndCache;this.gMapControl1.MapProvider = GMapProviders.GoogleChinaHybridMap;this.gMapControl1.Position = new PointLatLng(40.0, 117.0);this.gMapControl1.MinZoom = 4;this.gMapControl1.MaxZoom = 18;this.gMapControl1.Zoom = 14;
  1. 创建一个成员变量,用于储存鼠标单击时的位置信息
	    private PointLatLng mouseDownPos;
  1. 双击编辑MouseDown事件,在事件内编辑
//当前鼠标按下时的位置信息赋值给mouseDownPos
mouseDownPos = this.gMapControl1.FromLocalToLatLng(e.X, e.Y);
  1. 双击编辑Click事件,在事件内编辑
//在鼠标点击处创建一个标记点
GMapMarker marker = new GMarkerGoogle(mouseDownPos, GMarkerGoogleType.blue_pushpin);
//将该标记添加到图层中
markers.Markers.Add(marker);

至此完成了在鼠标点击处打标记点的功能,如图
在这里插入图片描述
该Form源码:

using GMap.NET;
using GMap.NET.MapProviders;
using GMap.NET.WindowsForms;
using GMap.NET.WindowsForms.Markers;
using System;
using System.Windows.Forms;
namespace GmapMark
{public partial class Form1 : Form{//创建一个名为“markers”的图层GMapOverlay markers = new GMapOverlay("lay");private PointLatLng mouseDownPos;public Form1(){InitializeComponent();}private void gMapControl1_Load(object sender, EventArgs e){this.gMapControl1.Manager.Mode = AccessMode.ServerAndCache;this.gMapControl1.MapProvider = GMapProviders.GoogleChinaHybridMap;this.gMapControl1.Position = new PointLatLng(40.0, 117.0);this.gMapControl1.MinZoom = 4;this.gMapControl1.MaxZoom = 18;this.gMapControl1.Zoom = 14; //将图层添加到地图this.gMapControl1.Overlays.Add(markers);}private void Form1_Load(object sender, EventArgs e){}private void gMapControl1_Click(object sender, EventArgs e){GMapMarker marker = new GMarkerGoogle(mouseDownPos, GMarkerGoogleType.blue_pushpin);markers.Markers.Add(marker);}private void gMapControl1_MouseDown(object sender, MouseEventArgs e){mouseDownPos = this.gMapControl1.FromLocalToLatLng(e.X, e.Y);}}
}

http://chatgpt.dhexx.cn/article/7HQyVNgS.shtml

相关文章

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,GCJ02,BD09坐标转…

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

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

GMap.net 自定义Marker

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

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

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

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

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

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

目录 一、Gmap库引用 1.下载Gmap引用库 2.Visual Studio添加项目引用 (1)打开项目后点击项目后添加引用 ​ (2)浏览本地库 (3)添加引用即可 二、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类型,默认是*/*,表示任意的MIME类型。该注解的值是数组类型,支持多个MIME类型,可以使用MediaType来指定MIME类型。 Produces 指定http响应的MIME类型,默认是*/*,表示任意的M…

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

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

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

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

AJAX、异步和同步区别

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

js异步与同步的区别

你应该知道,javascript语言是一门“单线程”的语言,不像java语言,类继承Thread再来个thread.start就可以开辟一个线程,所以,javascript就像一条流水线,仅仅是一条流水线而已,要么加工&#xff0…

同步调制和异步调制区别

在PWM控制电路中,载波频率 fc 和调制信号频率 fr 之比成为载波比,根据载波信号和信号波信号是否同步分为同步调制和异步调制。 1 什么是异步调制? 载波信号和调制信号不保持同步的方式称为异步调制,如下图所示,异步调…

同步和异步,区别

同步: 同步的思想是:所有的操作都做完,才返回给用户。这样用户在线等待的时间太长,给用户一种卡死了的感觉(就是系统迁移中,点击了迁移,界面就不动了,但是程序还在执行,…

java同步和异步的区别_java中同步与异步区别是什么

一、同步与异步概念:(推荐:java视频教程) 1.同步:所有的操作都做完,才返回给用户。这样用户在线等待的时间太长,给用户一种卡死了的感觉(就是系统迁移中,点击了迁移,界面就不动了,但…

ajax什么是异步和同步,ajax异步和同步的区别

AJAX异步 打个比方吧,通常情况下,用户注册,那么用户首先得填写好表单,然后点提交,这样表单就会向服务发出一个请求,则服务器处理代码,如果用户存在,则返回一个信息。总之,就是所有的数据需要你点提交后,信息才会发送! 而AJAX就相当于是模拟了一个信息发送请求,你可…

java8拉姆达表达式对Object去重复

java8拉姆达表达式对Object去重复 public static <T> Predicate<T> distinctByKey(Function<? super T, Object> keyExtractor) {Map<Object, Boolean> seen new ConcurrentHashMap<>();return object -> seen.putIfAbsent(keyExtractor.a…

拉姆达表达式 filter与map的讲解

filter 根据条件过滤元素 map 获取(映射)每个元素,并对其进行操作 参考链接

sort()与拉姆达表达式

sort()与拉姆达表达式的结合 #include <iostream> #include <string> #include <vector> #include <ctime> #include <map> #include <utility> #include <algorithm>using std::cout; using std::endl; using std::string; using …

java 拉姆达表达式_一看就懂之java8新特性函数式编程:我是拉姆达表达式lambda...

我们都知道&#xff0c; java8之后增加了很多新特性&#xff0c;大大的简化了代码的编写、阅读的负担。 先发个牢骚&#xff1a; 今天up主根据自己的理解跟大家说说新特性之一的lambda express(拉姆达表达式)&#xff0c;每当看到新的语法改动&#xff0c;内心我都是拒绝的。因…