c# - 如何将地图框瓷砖添加到gmap?
问题描述
我想从数据库中获取地图框图块,但它不起作用。我从这里得到 MBTilesMapProvider 类。它的调用如下:
map.Manager.Mode = AccessMode.ServerAndCache;
map.MapProvider = new MBTilesMapProvider("C:\\Users\\NPC\\Desktop\\test\\ne.mbtiles");
但如果谷歌地图用作地图提供者,如下所示,它运作良好
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;
}
推荐阅读
- go - 反转二叉树:如何正确交换整个左树和右树
- swift - 如何指定哪个构建目标包含特定的 swift 包依赖项?
- clojure - 十进制转二进制 Clojure
- apache-spark - 任务失败后如何让 PySpark/Databricks 作业继续运行并忽略不良记录
- numpy - CuPy 和 Dirichlet 给了我 TypeError: unsupported operand type(s) for +=: 'int' and 'tuple'
- lua - 如何使用开发产品在 Roblox 中制作持续 30 秒的盾牌?
- node.js - Axios 返回“net::ERR_CERT_AUTHORITY_INVALID”
- cuda - @cuda.jit(device=True) 返回 'DeviceFunctionTemplate' 对象不可调用
- python - 如何使用拟合模型预测明天的价值?
- node.js - 使用打字稿发出请求方法时遇到错误