GMap 初步使用

香农上次写了有关GMap开源项目源码的编译方法,这次就讲讲怎么使用GMap进行简单操作吧。

首先香农建立了一个winform工程,命名为GMapTest1并在工程中添加了对GMap的引用(GMap.NET.Core.dll和GMap.NET.WindowsForms.dll)
添加GMap引用
添加完成之后将GMapControl控件拖拽到Form面板上,默认GMapControl名称为gMapControl1(香农不想改了,筒子们可以改)。

1、加载地图

要使用GMap加载地图,首先需要指定加载的地图类,地图加载方式,地图缩放比例,地图显示中心等基本地图属性。具体的操作代码如下:

       this.gMapControl1.CacheLocation = System.Windows.Forms.Application.StartupPath;//指定地图缓存存放路径
        this.gMapControl1.MapProvider = GMapProviders.BingHybridMap;//指定地图类型
        this.gMapControl1.Manager.Mode = AccessMode.ServerAndCache;//地图加载模式
       this.gMapControl1.MinZoom = 1;   //最小比例
        this.gMapControl1.MaxZoom = 23; //最大比例
        this.gMapControl1.Zoom = 15; //当前比例
        this.gMapControl1.ShowCenter = false; //不显示中心十字点
        this.gMapControl1.DragButton =System.Windows.Forms.MouseButtons.Left;//左键拖拽地图
        this.gMapControl1.Position = new PointLatLng(23,113);

GMap有三种加载模式Server(从目标服务器加载)、Cache(从指定缓存加载)、ServerAndCache(使用服务器和缓存加载并存的方式加载)根据项目的实际情况自己选择,GMap地图缩放共有24级,缩放比例从1到24地图显示区域逐渐变大,显示场景范围逐渐变大,换言之就是,缩放比例越大,显示地理信息越详细,缩放比例越小,显示的地理位置宽度也就越大,地图比例尺也就越大。GMap默认使用鼠标右键进行地图拖动,这不符合我们一贯的习惯,将其改为鼠标左键拖动。运行我们的工程,就可以看到我们加载的地图。

地图加载结果

2、GMapOverlay类介绍

当我们成功加载地图之后,需要在地图上进行操作,此时就需要使用到GMapOverlay类,我们可以把GMapOverlay看成是透明的画布,蒙在我们的地图之上,当我们在GMapOverlay上进行操作时,GMapOverlay上绘制的内容将会覆盖在地图上方,使得我们的Marker,Routes等,和地图信息是一一对应的。

首先声明一个GMapOverlay对象,可以使用带参的构造函数也可以使用不带参数的构造函数。

public GMapOverlay overlay = new GMapOverlay("Marker"); 

GMap对象中有一个公有的集合属性变量Overlays,当我们声明一个属性GMapoverlay变量时,我们将声明的overlay添加到集合中去,

   this.gMapControl1.Overlays.Add(overlay);

这样当我们对overlay进行操作时,就是对GMap进行操作的,

在GMapOverlay中有三个比较关键的集合类型变量:Markers,Routes,Polygons.

Markers:

Markers用来标识我们地图使用者想要突出或标记的信息,通常用它来标明一个点所在的位置,名称等信息,这里做一个单机鼠标左键在地图上标记Marker的实例。首先我们需要使用到GMap的鼠标点击事件:

   this.gMapControl1.MouseClick += gMapControl1_MouseClick;

我们便可以在消息响应函数gMapControl1_MouseClick中进行Marker的显示操作了。

PointLatLng p = this.gMapControl1.FromLocalToLatLng(e.X, e.Y);//将鼠标点击点坐标转换为经纬度坐标
GMapMarker marker = new GMarkerGoogle(p, GMarkerGoogleType.arrow);
        marker.ToolTipText = "点击了这个点";
        this.overlay.Markers.Add(marker);

显示效果如下:

Marker显示
途中红色矩形框标注出来的便是地图上用来标识点的Marker,而用红色椭圆标注出来的部分,则是用于指示该Marker的提示工具,需要将鼠标移动到相应的Marker上才会自动显示出来。

Routes:

从字面上来讲Routes集合是用来存储路径的,事实上也是如此,可是存储路径是怎么一个存储方式呢?这里香农也做了一个通过点击鼠标生成路径并显示出来的例子。首先在工程代码中声明一个经纬度点的集合变量:

            List<PointLatLng> list = new List<PointLatLng>();

在gMapControl1的鼠标点击事件中添加如下代码(最好是先删除或者注释掉有关Marker的代码):

        overlay.Routes.Clear();
        list.Add(p);
        GMapRoute route= new GMapRoute(list, "line");
        route.Stroke.Color = Color.Red;
        route.Stroke.Width = 2;  //设置画
        overlay.Routes.Add(route);

Routes示例
鼠标点击两个点之间生成的红色直线,各个直线首尾相连就形成了我们点击时生成的路径。而在代码中,我们通过route.Stroke.Color设置线段的颜色,route.Stroke.Width设置线段的粗细。

Polygons:

Polygons集合对象其实表示的是在地图上选择的某个区域,同样的香农这里做一个鼠标点击生成一个Polygon的实例:

        overlay.Polygons.Clear();
        GMapPolygon polygon = new GMapPolygon(list, "多边形");
        polygon.Fill = new SolidBrush(Color.FromArgb(50, Color.Red));
        polygon.Stroke = new Pen(Color.Blue,2);
        polygon.IsHitTestVisible = true;
        overlay.Polygons.Add(polygon);

点击调试运行,运行效果如下所示,需要鼠标点击至少三次以上才可以哦:
Polygon显示效果

至此我们便可以通过在GMapOverlay对象上进行操作,从而对GMap地图控件进行相关功能的定制或者拓展了。

最后附上本次的源码:http://download.csdn.net/detail/yuanquanzheng/9591930

  • 10
    点赞
  • 47
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值