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

花了两天的时间,粗略的学习了一下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这个控件。拖拽到我们的窗体上,调整合适的大小。C#项目之 GMap.net 标记点及 绘制多点之间的距离_第1张图片

对控件属性参数的设置:

我将控件改名为gMap

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

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

C#项目之 GMap.net 标记点及 绘制多点之间的距离_第2张图片



STEP. 2 初始地图

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

//初始化地图为google map 并设定初始中心位置为china
            gMap.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

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

C#项目之 GMap.net 标记点及 绘制多点之间的距离_第3张图片

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


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.


C#项目之 GMap.net 标记点及 绘制多点之间的距离_第4张图片

添加以下代码

            //创建图层(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);  //向控件中添加图层
C#项目之 GMap.net 标记点及 绘制多点之间的距离_第5张图片

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");//新建图层,目的是放置道路GMapRoute
            routesOverlay.Routes.Add(r);//将道路加入图层
            gMap.ZoomAndCenterRoute(r);//将r这条路初始为视图中心,显示时以r为中心显示
	    gMap.Overlays.Add(routesOverlay);

C#项目之 GMap.net 标记点及 绘制多点之间的距离_第6张图片


不足之处,望指正。


查阅资料:

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#)