Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/293.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/user-interface/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何将地图框平铺添加到gmap?_C#_User Interface_Maps_Gmap.net_Mbtiles - Fatal编程技术网

C# 如何将地图框平铺添加到gmap?

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

我想从数据库中获取地图框分幅,但它不起作用。我从学校获得MBTILESSApprovider课程。 它的调用方式如下所示:

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;
}