GMap 初步使用

GMap 初步使用香农上次写了有关 GMap 开源项目源码的编译方法 这次就讲讲怎么使用 GMap 进行简单操作吧 首先香农建立了一个 winform 工程 命名为 GMapTest1 并在工程中添加了对 GMap 的引用 GMap NET Core dll 和 GMap NET WindowsForms dll 添加完成之后将 GMapControl 控件拖拽到 Form 面板上 默认 GMapControl 名称为 gMapControl1

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

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 
  
    list = new List 
   
     (); 
    
  

在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); 

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

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

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/227495.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月16日 下午9:11
下一篇 2026年3月16日 下午9:11


相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号