当缓存不可用时,如何在 Gmap.net 的离线模式下使用 mbtile 地图?

马尼什耆那教

我正在使用 Gmap.net,我已经成功地实现了 mbtile 地图。当系统中的互联网连接可用时,当第一次在“ C:\Users\manish.jain\AppData\Local\GMap.NET ”中创建文件夹 GMap.NET 时,这在机器上工作正常此时; 有多个文件夹创建如下:

  1. 缓存
  2. 地理编码缓存
  3. 地理缓存数据库
  4. 传单
  5. 地标缓存
  6. 路由缓存
  7. TileDBv5
  8. 缓存

但是,当在离线模式下执行相同的操作时,只有两个文件夹创建在与以下位置相同的位置:

  1. 缓存
  2. TileDBv5

在这种情况下,我在地图的每个图块上都收到了消息

"Exception:Buffer cannot be null. Paremeter name: buffer"

我附上了相同的快照。 在此处输入图片说明

我的要求是始终在离线模式下完成所有地图工作,因为在客户端没有可用的互联网连接。

请让我知道所有这些文件夹的含义和目的以及此问题的解决方案。我在 Map's Mode 中使用了这行代码:

MainMap.Manager.Mode = AccessMode.ServerAndCache;

并从定义的位置加载 mbtile 为:

MainMap = new Demo.WindowsForms.Map();
MainMap.MapProvider = new MBTilesMapProvider(@"C:\\India.mbtiles");
MainMap.MinZoom = MainMap.MapProvider.MinZoom;
MainMap.MaxZoom = MainMap.MapProvider.MaxZoom;

我为这个问题搜索了很多,但在 google 或 stackoverflow 中找不到任何解决方案。请帮忙!

马尼什耆那教

最后,我花了宝贵的 4-5 个小时发现在尝试打开 SQLite 连接时出现问题后,我得到了这个问题的解决方案。我收到了“无法打开数据库文件”的异常。此连接已使用以下行解决,其中 parseViaFramework 需要在创建连接实例时传递,如下所示:

using (SQLiteConnection conn = new SQLiteConnection(String.Format("Data Source={0};Version=3;", Path),true))

在 MBTileHelper.cs 类中:

public byte[] GetTileStream(long x, long y, int zoom)
    {
        byte[] retval = null;
        try
        {
            //using (SQLiteConnection conn = new SQLiteConnection(String.Format("Data Source={0};Version=3;", Path)))
            using (SQLiteConnection conn = new SQLiteConnection(String.Format("Data Source={0};Version=3;", Path),true))
            {
                conn.Open(); // Here I was getting an exception.
                using (SQLiteCommand cmd = new SQLiteCommand() { Connection = conn, CommandText = String.Format("SELECT * FROM tiles WHERE tile_column = {0} and tile_row = {1} and zoom_level = {2};", x, y, zoom) })
                {
                    SQLiteDataReader reader = cmd.ExecuteReader();
                    if (reader.Read())
                    {
                        byte[] bytes = reader["tile_data"] as byte[];
                        retval = bytes;
                    }
                }
            }
        }
        catch(Exception ex)
        {
            retval = null;
        }
        return retval;
    }

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何打印GMap.NET地图?

来自分类Dev

如何打印GMap.NET地图?

来自分类Dev

使用CMAP的GMAP.NET,如何在不调用地图MouseClick的情况下使用标记OnMarkerClick?

来自分类Dev

使用GMap.net在地图上绘制折线

来自分类Dev

地图控件Gmap.net崩溃

来自分类Dev

地图控件Gmap.net崩溃

来自分类Dev

如何使用gmap2插件使地图去饱和?

来自分类Dev

使用自定义地图提供程序的GMap.NET.GMapControl?

来自分类Dev

Gmap.net缓存如何工作?

来自分类Dev

Gmap.net缓存如何工作?

来自分类Dev

如何在GMap.NET输出或使用我的Graphics对象绘制ESRI形状

来自分类Dev

Gmap,jQuery和Google地图

来自分类Dev

如何在按下 SEND 按钮时网络不可用时显示小吃栏

来自分类Dev

离线地图缓存

来自分类Dev

如何在VB.Net中创建Circe Whit GMap

来自分类Dev

下载的地图在混合或卫星模式下不可见,仅在离线的正常模式下可见。这里地图 SDK

来自分类Dev

如何在gmap4rails最新版本中设置地图选项

来自分类Dev

Gmap3从数据库显示地图上所有可用的标记吗?

来自分类Dev

从多个服务器上的多个mbtile创建Web地图图层

来自分类Dev

如何在离线模式下使用Cordova Geolocation插件

来自分类Dev

如何在离线模式下使用Cordova Geolocation插件

来自分类Dev

Gmap3 Google Maps使用地理编码的位置将地图居中

来自分类Dev

Gmap3 Google Maps使用地理编码的位置将地图居中

来自分类Dev

Gmap.net标记删除

来自分类Dev

如何在命令模式下使用Tab创建地图组合?

来自分类Dev

如何在GMap.NET中为路线添加箭头(路线的方向)?

来自分类Dev

如何在GMap.NET中为路线添加箭头(路线的方向)?

来自分类Dev

Qt / Qml:如何包括地图图块以供离线使用?

来自分类Dev

如何使用Mapbox SDK在离线地图中添加标记

Related 相关文章

  1. 1

    如何打印GMap.NET地图?

  2. 2

    如何打印GMap.NET地图?

  3. 3

    使用CMAP的GMAP.NET,如何在不调用地图MouseClick的情况下使用标记OnMarkerClick?

  4. 4

    使用GMap.net在地图上绘制折线

  5. 5

    地图控件Gmap.net崩溃

  6. 6

    地图控件Gmap.net崩溃

  7. 7

    如何使用gmap2插件使地图去饱和?

  8. 8

    使用自定义地图提供程序的GMap.NET.GMapControl?

  9. 9

    Gmap.net缓存如何工作?

  10. 10

    Gmap.net缓存如何工作?

  11. 11

    如何在GMap.NET输出或使用我的Graphics对象绘制ESRI形状

  12. 12

    Gmap,jQuery和Google地图

  13. 13

    如何在按下 SEND 按钮时网络不可用时显示小吃栏

  14. 14

    离线地图缓存

  15. 15

    如何在VB.Net中创建Circe Whit GMap

  16. 16

    下载的地图在混合或卫星模式下不可见,仅在离线的正常模式下可见。这里地图 SDK

  17. 17

    如何在gmap4rails最新版本中设置地图选项

  18. 18

    Gmap3从数据库显示地图上所有可用的标记吗?

  19. 19

    从多个服务器上的多个mbtile创建Web地图图层

  20. 20

    如何在离线模式下使用Cordova Geolocation插件

  21. 21

    如何在离线模式下使用Cordova Geolocation插件

  22. 22

    Gmap3 Google Maps使用地理编码的位置将地图居中

  23. 23

    Gmap3 Google Maps使用地理编码的位置将地图居中

  24. 24

    Gmap.net标记删除

  25. 25

    如何在命令模式下使用Tab创建地图组合?

  26. 26

    如何在GMap.NET中为路线添加箭头(路线的方向)?

  27. 27

    如何在GMap.NET中为路线添加箭头(路线的方向)?

  28. 28

    Qt / Qml:如何包括地图图块以供离线使用?

  29. 29

    如何使用Mapbox SDK在离线地图中添加标记

热门标签

归档