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.


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

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

选择控件,选择属性,打开属性面板,除了控件的通用属性外,还有GMap特定的属性,


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);
    首先,创建一个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.Red, 1); 
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控件使用

GMap.NET控件使用相关推荐

  1. GMap.NET入门详细教程【1】--------下载 GMap.NET,并在VS中添加GMap.NET控件

    GMap.NET入门 下载 GMap.NET,并在VS中添加GMap.NET控件 初始化并加载一张地图 添加标记点.线.多边形 为控件添加事件,在鼠标单击时打点 GMap.NET GMap.NET是开 ...

  2. GMap.net控件学习记录

    主要参考网址 http://www.cnblogs.com/luxiaoxun/p/3802559.html http://www.cnblogs.com/luxiaoxun/p/3463250.ht ...

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

    GMap.NET入门 下载 GMap.NET,并在VS中添加GMap.NET控件 初始化并加载一张地图 添加标记点.线.多边形 为控件添加事件,在鼠标单击时打点 快捷添加 选中窗体中的GMap控件,并 ...

  4. Winform下的地图开发控件(GMap.NET)使用心得之二

    在上篇<Winform下的地图开发控件(GMap.NET)使用心得>中简单介绍了GMap.NET的控件基本情况,本篇开始介绍一下相关的代码操作. 其实目前GMap.NET提供的功能还不是很 ...

  5. 基于地图开发控件GMap.Net 使用 (一) 原创

    我们先看看GMap.NET的定义: GMap.NET是一个强大.免费.跨平台.开源的.NET控件,它在Windows Forms 和WPF环境中能够通过Google, Yahoo!, Bing, Op ...

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

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

  7. (转)深入理解最强桌面地图控件GMAP.NET ---离线地图

    这章会介绍GMAP.NET的核心功能之一:离线地图.这个功能可以满足很多政府项目.保密项目.或者由于种种原因不能上网的项目的需求. 本章主要分成三个方面介绍:演示.生成离线地图.Demo代码. 一.演 ...

  8. WPF编程--地图控件GMap使用

    目录 ​编辑 1.环境 2. NuGet导入依赖 3.  添加MapControl类 4. 编辑MainView.xaml.cs 5. 编辑MainView.xaml 6. 启动验证 源码: http ...

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

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

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

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

最新文章

  1. c语言常量类型转换,c语言基础教程常量变量和类型转换,免费版.doc
  2. linux 更改ctime_linux常用命令
  3. Cordova探险系列(一个)
  4. tableau可视化函数使用案例(六十七)-Tableau饼图及其变种(环形图、南丁格尔玫瑰图、旭日图)
  5. 简明python教程 --C++程序员的视角(一):数值类型、字符串、运算符和控制流
  6. vuecli启动的服务器位置,VUE启动流程vue-cli
  7. nodejs shell交互_nodejs调用shell
  8. 大数据数据收集数据困难_大数据就是好数据吗?研究人员在处理大数据集时遭遇的 5 大挑战...
  9. json解析数组 nlohmann_json解析数组 nlohmann_Nlohmann json学习
  10. 高性能计算(HPC)的前景、如何学习HPC
  11. 绿茶软件测试自学,7号心理测试小程序
  12. 【报告分享】2021年小红书美妆护肤洞察报告.pdf(附下载链接)
  13. 编写 Struts2 程序 的三个步骤 手动配置
  14. 图片转化为base64编码python版本
  15. datetime sql
  16. html网页设计优秀作品和代码,优秀的网页设计作品(一)
  17. 精通使用K米短信教程
  18. 12306订票候补是个坑_12306网上订票候补是什么意思
  19. 文本检测综述(2017 ~ 2021 持续更新)
  20. 微信点餐小程序设计与实现(一)

热门文章

  1. 计算机按键截图,截图按什么键,电脑按哪个键是截屏
  2. centos中设置邮件发送
  3. 联想小新air pro 13的 win10和ubuntu17.10双系统安装,彻底解决找不到磁盘问题。
  4. 深度分析何恺明新作MAE:通向CV大模型
  5. 1、Dreamweaver工具的使用
  6. AD10 BOM制作
  7. 大学计算机课程教学建议,计算机应用基础课程教学的建议
  8. 云计算、分布式计算和网格计算,主要有什么区别,基本概念是什么?
  9. 实训六 思科路由器配置静态路由
  10. PHP smarty