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

article/2025/11/11 8:21:27

一.介绍

本示例程序是我在做项目前的探索示例。示例中测试了一些简单的功能,满足了我项目中的基本功能。更进一步的开发,有待继续研究。

二.项目源代码地址

源代码下载地址

三.项目讲解

1.引用GMap的dll文件

利用GMap开发,需要用到两个dll文件:GMap.NET.Core.dll和GMap.NET.WindowsForms.dll。可以在vs中直接引用

在这里插入图片描述

2.引入命名控件

using GMap.NET;
using GMap.NET.WindowsForms;
using GMap.NET.MapProviders;
using GMap.NET.WindowsForms.Markers;

3.添加GMap地图控件

在工具栏中找到GMap.NET.WindowsForms.GMapControl,拖动到界面。

4.初始化地图及各图层

private void MapInit(){//初始化图层m_Overlay_Circle = new GMapOverlay("Circle");m_Overlay_Marker = new GMapOverlay("markers");m_Overlay_Line = new GMapOverlay("Line");m_Overlay_Planes = new GMapOverlay("Planes");//添加图层到地图上mapControl.Overlays.Add(m_Overlay_Circle);mapControl.Overlays.Add(m_Overlay_Marker);mapControl.Overlays.Add(m_Overlay_Line);mapControl.Overlays.Add(m_Overlay_Planes);//Bing混合地图mapControl.MapProvider = GMapProviders.GoogleChinaMap;//离线模式mapControl.Manager.Mode = AccessMode.CacheOnly;String mapPath = Application.StartupPath + "\\Data.gmdb";GMap.NET.GMaps.Instance.ImportFromGMDB(mapPath);//地图中心位置//gMap.SetPositionByKeywords("beijing, china"); mapControl.Position = new PointLatLng(31.49, 104.6);  //中心点的纬度,经度     //不显示中心十字点//左键拖拽地图mapControl.DragButton = MouseButtons.Left;//不显示十字中心mapControl.ShowCenter = false;//最小缩放mapControl.MinZoom = 5;//最大缩放mapControl.MaxZoom = 12;//当前缩放mapControl.Zoom = 9;mapControl.MouseClick += new MouseEventHandler(mapControl_MouseClick);}

5.开发

接下来就可以在GMap上进行各种快乐的开发了。比如:添加飞机、添加航线、添加距离环、飞机按航线飞行等。
在这里插入图片描述


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

相关文章

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;内心我都是拒绝的。因…

拉姆达表达式学习(1)

我曾经遇到一个项目,项目里面需要经常对一系列的同类型集合进行操作,如对集合进行增加元素,删除集合的指定索引的元素等等.    我们可以使用ArrayList来进行.如 1 ArrayList stringListnew ArrayList(); 2 stringList.Add("大家好"); 3 stringList.Add("你们好…

拉姆达表达式记录 + log日志+代码

目录 71. item.label $"{lstD[i].DeptName}({lstCamera.Count})";72. 定义entity时不写传统的{get&#xff1b;set&#xff1b;}73.74. EF多对多75. DateTime.Now.Subtract(x.GpsTime).TotalHours76. queryModel.LogDate.Value.Year77. .net导出Excel78. User.Ident…

List.sort()方法使用拉姆达表达式进行排序的一个例子

这是牛客网华为java题库的一道题&#xff1a;HJ26 字符串排序 题中要求&#xff0c;对字符串中的英文字母不分大小写按照字典顺序排序&#xff0c;遇到相同的字母&#xff0c;要求保持它们的相对顺序不变&#xff0c;非英文字母字符保持原位置不变。例如&#xff1a; 输入&…

拉姆达表达式

1、Queryable 用于拉姆达表达式操作 //---------Queryable<T>,扩展函数查询---------// //---------Queryable<T>,扩展函数查询---------////针对单表或者视图查询//查询所有 var student db.Queryable<Student>().ToList(); var studentDynamic db.Querya…