You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在C#中用GMap.Net开发离线地图应用:MapProvider下载问题

GMap.NET 离线地图配置与瓦片下载方法
  • 切换访问模式
    将原代码中的ServerOnly改为ServerAndCache(优先读取本地缓存,无缓存时从服务器下载并保存)或CacheOnly(完全离线,仅读取本地缓存):
    GMap.NET.GMaps.Instance.Mode = GMap.NET.AccessMode.ServerAndCache;

  • 设置本地缓存路径
    指定地图瓦片的存储目录,确保程序拥有该目录的读写权限:
    GMap.NET.GMaps.Instance.CacheLocation = @"C:\GMapCache";
    路径可根据实际需求自定义。

  • 下载离线地图瓦片
    有两种方式获取瓦片:

    1. 实时浏览缓存:运行程序后,拖动地图覆盖需要离线使用的区域,放大到目标缩放级别,GMap.NET会自动将当前视图的瓦片下载并保存到缓存路径。
    2. 批量下载:使用GMap.NET配套的地图下载工具,可批量指定区域(经纬度范围或矩形框选)、缩放级别(对应你的MinZoom和MaxZoom),一次性下载所需瓦片,完成后将瓦片文件放到设置的缓存路径中。
  • 修改后的完整代码示例

    // 配置缓存与访问模式
    GMap.NET.GMaps.Instance.CacheLocation = @"C:\GMapCache";
    GMap.NET.GMaps.Instance.Mode = GMap.NET.AccessMode.ServerAndCache;
    
    _map = new GMapControl();
    Map.MapProvider = GMap.NET.MapProviders.BingHybridMapProvider.Instance;
    Map.DragButton = MouseButton.Left;
    Map.MinZoom = 2;
    Map.MaxZoom = 18;
    Map.Zoom = 5;
    Map.CanDragMap = true;
    Map.Position = new GMap.NET.PointLatLng(48.8589507, 2.2775175);
    Map.ShowCenter = false;
    
  • 注意事项

    • 不同地图提供商的瓦片存储结构不同,请勿混合存放不同提供商的缓存文件。
    • 使用CacheOnly模式前,必须确保已下载对应区域和缩放级别的全部瓦片,否则地图会显示空白。
    • 确认缓存目录的读写权限,避免无法保存或读取瓦片。

内容的提问来源于stack exchange,提问作者Avi C

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.24 12:48:23