花了两天的时间,粗略的学习了一下GMap,把学习的地方写下来,不足之处,望大家多多指正!

GMap是codeplex上的一个很好的开源项目,可用于winform WPF和windows mobile。GMap官网

主要支持对地图(eg.google bing yahoo等等)的运用。通过demo我们可以看到GMap的强大。

STEP. 1 准备工作

首先我们在官网上下载dll文件,但是我的是从官网的source code中抽出来的,因为他更新的问题,有的类参数有些问题,所以我就没有用官网上download中下载。 需要GMap.NET.Core.dll 和 GMap.NET.WindowsForms.dll这两个文件。

我用的是VS2010,新建一个C#的winform project,然后在引用中将上述两个dll文件引入。在工具箱中右键,点击选择项,在弹出的窗口中在.NET Framework组件标签页中,通过浏览按钮找到GMap.NET.WindowsForms.dll文件 添加后在.NET Framework组件标签页出现GMapControl这个选项,勾选,确定。这是会在工具箱中出现GMapControl这个控件。拖拽到我们的窗体上,调整合适的大小。

对控件属性参数的设置:

我将控件改名为gMap

其他参数网上有详细说明:

CanDragMap-----鼠标右键拖动地图
MarkersEnabled---显示markers
PolygonsEnabled---显示polygon
ShowTileGridLines---显示坐标格网
Zoom, MinZoom, MaxZoom---Google地图的缩放水平从0-18,0是全球范围,18是街道级别,全国级别的话,zoom设为5比较合适。

STEP. 2 初始地图

之后就要进行地图控件的初始化工作。在gMapControl1_Load(object sender, EventArgs e)

//初始化地图为google map 并设定初始中心位置为chinagMap.MapProvider = GMap.NET.MapProviders.GoogleChinaMapProvider.Instance;GMap.NET.GMaps.Instance.Mode = GMap.NET.AccessMode.ServerOnly;//gMap.Position = new PointLatLng(45.74740199642105, 126.69570922851562);//此为定初始位置的另一种方式gMap.SetPositionByKeywords("china,harbin");//设置初始中心为china harbin

这是运行就会出现地图了并且以哈尔滨为中心。

可以滚轮放大,右键拖动。

STEP. 3  建立标记点

这里不得不提的概念:

1. What is the mapcontrol (GMapControl)? This is the control whichrenders the map.

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

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

4. What is aroute (GMapRoute)? This is the path or directionbetween two or more points.

添加以下代码

            //创建图层(overlay)和标签(marker),将标签加入图层,再将图层加入控件中
GMapMarker gMapMarker = new GMarkerGoogle(new PointLatLng(45.74740199642105, 126.69570922851562),
GMarkerGoogleType.green);//在(45.7,126.695)上绘制一绿色点
GMapOverlay gMapOverlay = new GMapOverlay("mark");  //创建图层
gMapOverlay.Markers.Add(gMapMarker);  //向图层中添加标签
gMap.Overlays.Add(gMapOverlay);  //向控件中添加图层

STEP. 4 画出道路

            string start = "花园街, 哈尔滨, china";string end = "密山路, 哈尔滨, china";MapRoute route = GMap.NET.MapProviders.GoogleMapProvider.Instance.GetRoute(start, end, false, false, 15);//找到start到end的一条路
     GMapRoute r = new GMapRoute(route.Points, "My route");//将路转换成线r.Stroke.Width = 5;r.Stroke.Color = Color.Black;GMapOverlay routesOverlay = new GMapOverlay("routes");//新建图层,目的是放置道路GMapRouteroutesOverlay.Routes.Add(r);//将道路加入图层gMap.ZoomAndCenterRoute(r);//将r这条路初始为视图中心,显示时以r为中心显示
     gMap.Overlays.Add(routesOverlay);

不足之处,望指正。

查阅资料:

http://www.websofia.com/2013/03/gmap-net-tutorial-routes/

http://www.cnblogs.com/wuhuacong/archive/2010/03/09/1681382.html

http://blog.sina.com.cn/s/blog_819100560101dgng.html

C#项目之 GMap.net 标记点及 绘制多点之间的距离相关推荐

  1. 【vue项目使用echarts实现区域地图绘制,且可点击单独区域】

    vue项目使用echarts实现区域地图绘制,且可点击单独区域 - 菜鸟程序员的总结 - 博客园

  2. [电子书]项目储备二:用FreeType2绘制矢量字体、多行文字

    [电子书]项目储备二:用FreeType2绘制矢量字体.多行文字 0 矢量字体 VS 点阵字体 1 FreeType2的介绍与基本使用 2 在LCD显示一个矢量字体,且可旋转 3 在LCD任意位置显示 ...

  3. 【计算机网络】4-41假定网络中的路由器B的路由表有如下的项目(这三列分别表示“目的网络”、“距离”和“下一跳路由器”):

    [问题]假定网络中的路由器B的路由表有如下的项目(这三列分别表示"目的网络"."距离"和"下一跳路由器"): N1 7 A N2 2 C N ...

  4. [问题]假定网络中的路由器B的路由表有如下的项目(这三列分别表示“目的网络”、“距离”和“下一跳路由器”):

    [问题]假定网络中的路由器B的路由表有如下的项目(这三列分别表示"目的网络"."距离"和"下一跳路由器"): N1 7 A N2 2 C N ...

  5. 如何设置列表的项目符号(li的点)与文字之间的距离

    今天在上课过程中遇到了一个小问题,如何调整li的点与文字之间的距离,一般情况下,个人会去掉li自带的项目符号,单独做一个圆点,但今天特殊情况,没有做,所以就"逼迫"我去找到了一个属 ...

  6. 项目中使用antv G6 实现节点链路之间动态效果

    项目前端开发框架是使用VUE 项目需求:在不同的服务节点之间,根据不同的链路数据,显示出节点之间的链路状态,同时实现节点之间的动态效果. 先看效果 1 下载依赖包 # 使用CND引入 npm i @a ...

  7. 电商项目—商品的spu、sku概念及其之间的关系

    电商项目-商品的spu.sku概念及其之间的关系 电商项目中涉及到商品时必然会遇到的几个概念,SPU.SKU.单品等.彻底搞懂和明白了这几个概念对我们设计商品表是十分必要的前提条件. SPU:标准化产 ...

  8. vue项目引入百度地图BMapGL鼠标绘制和BMap辅助工具

    目录 引言 1.引用百度地图 2.在项目中使用百度地图 2-1.页面结构部分 2-2.js逻辑部分 3-1.页面结构部分 Vue.js 是一个用于构建用户界面的渐进式 JavaScript 框架.它旨 ...

  9. Qt项目中,用QPainter进行绘制图形时,边角显示不完整问题的梳理

    总第42篇 本文主要梳理总结了我自己在项目开发过程中经常遇到的一个问题,就是用QPainter进行图形绘制时,边角显示不完整的现象.这个问题虽然比较简单,但是很容易忘记,每次绘图时都要调试一下,故总结 ...

最新文章

  1. python去除英文字符中的数字和标点符号
  2. Linux任务计划、周期性任务执行
  3. 线程安全与可重入函数的区别及联系
  4. JDK动态代理和CGLIB代理的区别
  5. 【Java 并发编程】线程简介 ( 并发类型 | 线程状态 | CPU 数据缓存 )
  6. C 的CList,CPtrList,CObList,CStringList 用法之CPtrList
  7. [渝粤教育] 中国地质大学 大学英语(1) 复习题
  8. angularjs封装bootstrap官网的时间插件datetimepicker
  9. 如何计算一年总共有多少周_一年有几个周?怎么计算周数及闰年?
  10. 软件开发者如何准备未来?
  11. 不要在意七十亿分之一对另七十亿分之一的看法
  12. linux定时器tinner,第三章 套接字相关数据结构--基于Linux3.10
  13. 大公司的老板更专注人,小公司的老板更专注事
  14. 【不行你来找我】webstorm设置背景图片
  15. 48. Element isSupported() 方法
  16. #浪潮之巅#苹果公司和乔布斯神话----有感
  17. javaweb连接mysql教程_javaweb链接数据库教程
  18. c++字符串逆序输出
  19. Android 老生常谈之MVC与MVP
  20. graylog+kafka+zookeeper(单机测试及源码),graylog设置URL报警方式(五)

热门文章

  1. 来到传统行业做程序员,从准备提桶跑路到引领技术风潮?背景
  2. NAT地址转换协议学习
  3. 用python画小王八裤(turtle库)
  4. ISA SERVER常见问题总结专用贴(转)
  5. C语言中常用到的几个与系统时间相关的结构体及其说明
  6. Linux系统之复制粘贴命令
  7. Web前端之HTML超文本标记语言
  8. Ubuntu 如何搭建可视化界面?
  9. List、Collections
  10. python如何画散点图