CSkin博客

标题: 对GMap.Net求助 [打印本页]

作者: huang137    时间: 2016-2-4 21:25
标题: 对GMap.Net求助
本帖最后由 huang137 于 2016-2-4 21:28 编辑

      说句实话,本人喜欢编程,但不喜欢C#因为没英语基础,学起来很费力。所以一直用易语言进行编程,但是最近喜欢上地图的运用,想弄好地图,所以开始学习C#。把地图弄出来在说,根据在网上找的GMap.Net资料,但是地图怎么也显示不出来。现把资料和我自己项目都贴出来,希望能找到能相互学习的人互相交流,由于我是一个业余爱好者,所以在提问题的时候可能不会很专业,敬请谅解。最后对支持我学习的朋友我会给予一定奖励,谢谢大家。
  
这是我自己按下面的资料编写的,用的VS2010,由于压缩后还有4M多,无法直接放到论坛,只好放到了云盘上,下面是云盘的链接。
http://pan.baidu.com/s/1nuvlpjV


GMap.Net网上资料如下:

在WinForm项目中使用GMap:

1、新建一个Visual C# 的Windows窗口程序。添加对GMap.Net.Core.DLL和GMap.Net.WindowsForms.DLL的引用。

2、在项目中添加一个UserControl,这里取名为MapControl,修改这个UserControl,使其继承于GMapControl,这就是展示地图的控件。修改如下:

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

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

3、编译项目,在我们的Form设计窗口下,在工具箱中(tool box)里就可以看到这个MapControl,将这个MapControl加到Form中。

4、在主Form中添加相关的代码如下

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

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

        public MapForm()
        {
            InitializeComponent();

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

            mapControl.CacheLocation = Environment.CurrentDirectory + "\\GMapCache\\"; //缓存位置
            mapControl.MapProvider = GMapProviders.GoogleChinaMap; //google china 地图
            mapControl.MinZoom = 2;  //最小比例
            mapControl.MaxZoom = 24; //最大比例
            mapControl.Zoom = 10;     //当前比例
            mapControl.ShowCenter = false; //不显示中心十字点
            mapControl.DragButton = System.Windows.Forms.MouseButtons.Left; //左键拖拽地图
            mapControl.Position = new PointLatLng(32.064,118.704); //地图中心位置:南京

            mapControl.Overlays.Add(markersOverlay);

            mapControl.MouseClick += new MouseEventHandler(mapControl_MouseClick);
        }

        void mapControl_MouseClick(object sender, MouseEventArgs e)
        {
            if (e.Button == System.Windows.Forms.MouseButtons.Right)
            {
                PointLatLng point = mapControl.FromLocalToLatLng(e.X, e.Y);
                GMapMarker marker = new GMarkerGoogle(point, GMarkerGoogleType.green);
                markersOverlay.Markers.Add(marker);
            }
        }
    }
编辑运行后显示如下图:






作者: 乔克斯    时间: 2016-2-5 13:58
@Blue_Pen 呼叫~
作者: Blue_Pen    时间: 2016-2-6 21:19
【百度地图】BinGoo软件系列之--Winform百度地图
http://bbs.cskin.net/forum.php?m ... 200&fromuid=101
这是基本的地图操作,网络地图是不可以离线的。有一个离线版的,但是只能看地图,不能对地图进行操作。




欢迎光临 CSkin博客 (http://bbs.cskin.net/) Powered by Discuz! X3.2