您的位置:首页 > 其它

GMap地图的加载和现实

2017-01-03 09:35 721 查看
GMap.NET是一个强大、免费、跨平台、开源的.NET控件,它在Windows Forms 和WPF环境中能够使用来自Google, Yahoo!, Bing, OpenStreetMap, ArcGIS, Pergo, SigPac等地图,并可以实现寻找路径、地理编码以及地图展示功能,并支持缓存和运行在Mobile环境中。

现在我们来谈谈GMap的加载。

1、下载dll文件。

GMap主页

其中有三类dll,一定要下载的是.core其余连个根据项目的开发需要下载,因为我使用的是winfrom开发,所以下载的是前两个。

GMap.Net.Core:核心DLL

GMap.Net.WindowsForms:WinForm中使用的DLL

GMap.NET.WindowsPresentation:WPF中使用的DLL

2、添加对dll的引用

新建项目后再项目的引用中添加关于GMap的引用



3、将GMap添加到工具箱

GMap说到底是个控件,要对她方便的使用,工具箱是必不可少的

首先在工具箱中打开选择项



选择.NET Framework组件,筛选或自己找到GMapControl控件选择添加。

如果没有,就打开浏览,添加该组件。



4、从工具箱中使用

到现在,我们终于可以在工具箱中找到我们的GMapControl控件了。



现在我们来谈谈GMap的基本实现

1、我们新建一个MapControl的用户控件,让他继承自GMapControl(这样他就自动获取了GMap控件,不用自己添加了),代码如下:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Drawing;
using System.Data;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using GMap.NET.WindowsForms;

namespace GMap
{
public partial class MapControl : GMapControl
{
public MapControl()
{
InitializeComponent();
}
}
}


2、编译项目,这样我们在工具箱中就可以找到我们自己的用户控件。

3、在主窗体中添加MapControl控件。

4、在主窗体中添加代码:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using GMap.NET;
using GMap.NET.WindowsForms;
using GMap.NET.MapProviders;
using GMap.NET.WindowsForms.Markers;

namespace GMap
{
public partial class MapFrom : Form
{
private GMapOverlay markersOverlay = new GMapOverlay("markers");//放置marker的图层
public MapFrom()
{
InitializeComponent();

try
{
System.Net.IPHostEntry e = System.Net.Dns.GetHostEntry("ditu.google.cn");
}
catch
{
mapControl1.Manager.Mode = AccessMode.CacheOnly;
MessageBox.Show("no internet connection avaible avaible ,goning to CacheOnly mode", "GMap.NET Demo", MessageBoxButtons.OK);
}

mapControl1.CacheLocation = Environment.CurrentDirectory + "\\GMApCache\\";//缓存位置
mapControl1.MapProvider = GMapProviders.GoogleChinaMap;//googlechina地图
mapControl1.MinZoom = 2;//最小比例
mapControl1.MaxZoom = 24;//最大比例
mapControl1.Zoom = 10;//当前比例
mapControl1.ShowCenter = false;//不显示中心十字点
mapControl1.DragButton = System.Windows.Forms.MouseButtons.Left;//左键控制拖拽地图
mapControl1.Position = new PointLatLng(32.064, 118.704);//中心位置南京
mapControl1.Overlays.Add(markersOverlay);
mapControl1.MouseClick += new MouseEventHandler(mapControl1_MouseClick);
}

private void mapControl1_MouseClick(object sender, MouseEventArgs e)
{
if(e.Button==System.Windows.Forms.MouseButtons.Right)
{
PointLatLng point = mapControl1.FromLocalToLatLng(e.X, e.Y);
GMapMarker marker = new GMarkerGoogle(point, GMarkerGoogleType.green);
markersOverlay.Markers.Add(marker);
MessageBox.Show(point.ToString());
}
}
}
}


这里有一些关键属性需要解释一下:

MapProvider 确定地图提供者,经过测试,goolechina比较优秀,其他的无法加载地图。

MinZoom 控制地图最小比例。

MaxZoom 控制地图最大比例。

Zoom 控制当前比例

mapControl1.DragButton = System.Windows.Forms.MouseButtons.Left;这句解释一下,因为GMap的操作中默认是右键拖动的,但是不符合一般的用户习惯,所以在这里设置为左键拖动。

Position 控制初始中心位置

当然还有图层marker的概念,下次在写。

好了,现在可以编译运行一下这个GMap的小程序,它是一个缩放为10,中心为南京,没有红叉叉,右键显示经纬度的小东西。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  .net 地图 windows