C# 如何将地图框平铺添加到gmap?
我想从数据库中获取地图框分幅,但它不起作用。我从学校获得MBTILESSApprovider课程。 它的调用方式如下所示:C# 如何将地图框平铺添加到gmap?,c#,user-interface,maps,gmap.net,mbtiles,C#,User Interface,Maps,Gmap.net,Mbtiles,我想从数据库中获取地图框分幅,但它不起作用。我从学校获得MBTILESSApprovider课程。 它的调用方式如下所示: map.Manager.Mode = AccessMode.ServerAndCache; map.MapProvider = new MBTilesMapProvider("C:\\Users\\NPC\\Desktop\\test\\ne.mbtiles"); 结果: 但如果像下面这样使用谷歌地图作为地图提供商,它会很好地工作 map.Mana
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;
当我调试时,我注意到该方法从未被调用
注意:我认为查找数据库没有问题,因为它从数据库读取元数据。我通过在MBTilesHelper.cs上做一些更改来解决这个问题 首先,我意识到当从数据库MinZoom和MaxZoom值读取元数据时,它们始终保持为零,因为它不包含MinZoom或MaxZoom。因此,我手动设置它们 其次,我改变了一点“getImage”方法
GetTiles()返回一个图像(请参阅:)。因此,在c#中,图像需要一个picturebox。我认为这不是调试时的主要问题,我注意到从未调用过GetTiles。您需要一个图像,以便设置picturebox:pictureBox1.image。你知道些什么?字节数组还是流?您需要将您拥有的转换为图像。我认为gmap.net会自动处理它,因为我没有显式调用GetTiles方法。然而,真正的问题是,据我所知,mapbox tiles的x和y(行和列)与gmap tiles不同。不知何故,gmap开始承认它找不到文件,尽管我没有做任何更改。
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;
}