GMap地图的加载和现实

原创 2017年01月03日 09:35:54

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,中心为南京,没有红叉叉,右键显示经纬度的小东西。

版权声明:本文为博主原创文章,转载请注明出处

Gmap.net百度地图开发

以前我一直是做bs开发,由于临时接到任务,要求我开发百度离线地图cs的,而百度早已不支持pc的离线功能。找了很多资料,最终决定用gmap.net开发,不过选用百度,这里可能会考虑到很多东西,比如说纠偏...
  • chao20150805
  • chao20150805
  • 2016年03月30日 14:53
  • 2549

一 地图的加载与显示 关于GMap的介绍与使用可以看我以前的文章:

转自:http://www.cnblogs.com/luxiaoxun/p/3802559.html GMap.Net是.Net下一个地图控件,可以基于Http协议加载各个公司的地图,如Goog...
  • XBLYWL
  • XBLYWL
  • 2016年06月30日 19:56
  • 2099

GMap.Net添加百度和高德地图瓦片源

为GMap.NET添加百度地图源
  • zhaozhipeng
  • zhaozhipeng
  • 2015年04月18日 22:16
  • 3787

Google Map开发系列(八)——使用GMapOptions定制你的谷歌地图

之前我曾经解释过创建一个地图的详细步骤,但是,真正创建地图的核心步骤也就两行代码: var map = new GMap2(document.getElementById("mapContainer...
  • wangfei19880117
  • wangfei19880117
  • 2016年01月05日 14:05
  • 1077

GMap.net在winform中调用高德地图

GMap没有自带国内服务商的地图产品接口,需要在项目中创建相关的类才能调用,下面阐述下如何调用高德地图 1.在创建了UserControl(改天专门写写关于UserControl控件的使用)的前提下...
  • qq_35699528
  • qq_35699528
  • 2017年05月11日 00:43
  • 474

基于GMap.Net的地图解决方案

基于GMap.Net的地图解决方案 一 地图的加载与显示 关于GMap的介绍与使用可以看我以前的文章: GMap.Net开发之在WinForm和WPF中使用GMap.Net地图插...
  • kone0611
  • kone0611
  • 2016年03月30日 10:02
  • 1252

深入理解最强桌面地图控件GMAP.NET ---离线地图

这章会介绍GMAP.NET的核心功能之一:离线地图。这个功能可以满足很多政府项目、保密项目、或者由于种种原因不能上网的项目的需求。 本章主要分成三个方面介绍:演示、生成离线地图、Demo代码。 一...
  • swarb
  • swarb
  • 2013年12月11日 10:52
  • 26882

GMap —— 绘制点集

将在地图上用鼠标左键点击的点绘制出来(两点之间用直线连接),并且能够随地图一起实现等比例缩放和拖拽。 GMap主要涉及到几个坐标的转换: 经纬度与GPoint的转换:GPoint是gMapCo...
  • heimiguobazc
  • heimiguobazc
  • 2015年06月07日 13:28
  • 1340

C#在Winform中使用GMap.Net地图开发控件在离线模式下绘制两点路线

1.下载基于GMap.NET控件的WindowsForms程序的实例,可以直接引用这些dll文件编写地图应用软件。     我们所要用到其中的三个文件:          GMap.Net.Core....
  • lyss918
  • lyss918
  • 2016年03月19日 14:07
  • 6899

GMap 自定义Marker以及规则图形的绘制

自定义marker以及GMap地图上规则图形的绘制
  • yuanquanzheng
  • yuanquanzheng
  • 2016年08月12日 12:02
  • 2234
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:GMap地图的加载和现实
举报原因:
原因补充:

(最多只允许输入30个字)