如何将地图框图块添加到 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;
}
我想从数据库中获取地图框图块,但它不起作用。我从 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;
}