如何将地图框图块添加到 gmap?

how to add map box tiles to gmap?

我想从数据库中获取地图框图块,但它不起作用。我从 here 获取 MBTilesMapProvider class。 它被调用如下:

map.Manager.Mode = AccessMode.ServerAndCache;
map.MapProvider = new  MBTilesMapProvider("C:\Users\NPC\Desktop\test\ne.mbtiles");

结果:

但如果 google 地图像下面这样用作地图提供​​程序,则效果很好

map.Manager.Mode = AccessMode.ServerAndCache;
map.MapProvider = GoogleSatelliteMapProvider.Instance;

当我调试时,我注意到 GetTiles 方法从未被调用。

注意:我觉得找数据库没有问题,因为它是从数据库中读取元数据。

我通过在 MBTilesHelper.cs.

稍作改动解决了这个问题

首先我意识到,当从数据库 MinZoom 和 MaxZoom 值读取元数据时,它们始终保持为零,因为它不包含 MinZoom 或 MaxZoom。因此,我手动设置它们。

其次我改变了一点“getImage”方法。

private PureImage getImage(GPoint pos, int zoom)
{
    PureImage retval = null;

    var resultImage = _mbtiles.GetTileStream(pos.X, pos.Y, zoom);
        
    if (resultImage != null && resultImage.Length > 0)
    {
        //resultImage.Position = 0L;
        retval = GetTileImageFromArray(resultImage);
    }
    return retval;
}