废话不说,先上代码:
`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;
//gmap引用,自行添加
using GMap.NET;
using GMap.NET.WindowsForms;
using GMap.NET.MapProviders;
using GMap.NET.WindowsForms.Markers;
namespace GMAPtest
{
public partial class Form1 : Form
{
//private GMapOverlay markersOverlay = new GMapOverlay(“markers”); //放置marker的图层
public Form1()
{
InitializeComponent();
}
private void gmap_Load(object sender, EventArgs ee)
{
gmap.CacheLocation = Application.StartupPath + @"\MAP\"; //重设默认缓存位置(大爷个狗贼的默认缓存问题,浪费劳资一天的青春)
gmap.MapProvider = GMapProviders.GoogleChinaHybridMap;
//离线模式
gmap.Manager.Mode = AccessMode.CacheOnly;
String mapPath = Application.StartupPath + @"\MAP\TileDBv5\en\Data.gmdb";//就是这个2G的包,让小爷搞了个通宵!!!!
GMap.NET.GMaps.Instance.ImportFromGMDB(mapPath);
//地图中心位置
gmap.Position = new PointLatLng(39.185422, 112.252810); //中心点的纬度,经度
//不显示中心十字点
//gmap.ShowCenter = false;
//左键拖拽地图
gmap.DragButton = MouseButtons.Left;
gmap.MinZoom = 1; //最小缩放
gmap.MaxZoom = 18; //最大缩放
gmap.Zoom = 1; //当前缩放
}
}
}
`
制作离线地图包时,注意!!!!!用Gmap.net下载地图,离线地图导出后,要自己加载的,并不是那个目录下的,C:\Users\用户名<你的计算机用户名>\AppData\Local\GMap.NET\TileDBv5\en下的,那个文件包含缓存的。搞到凌晨快四点才在Stack Overflow上找到问题所在。
由于精力水平有限,最终本人放弃直接使用Gmap.net下载地图,改用“阿凡卢”网友分享的下载器(该下载器也是基于Gmap.net开发的,所以下载的离线地图包在自己的软件中直接拷贝过去就可以用)
自己做的地图包太大成,上传太慢,就不分享了,直接奉上下载器网址:https://www.cnblogs.com/luxiaoxun/p/4454880.html
先后尝试了ARCGIS和Gmap.net,各种问题前前后后花了四天时间,终于完成了自己第一个地图加载模块,感动!开心!
以此博客纪念我掉的一大把头发…