我写了您链接的博客文章并查看了 osmdroid 源代码,但我缺少有关您的设置和数据库中用于找到问题解决方案的图块的更多信息。
但是,由于您要求提供一些类名,因此您可以检查一下,我会尝试为您提供图块的运行方式-然后您可以自己查看代码,我希望这对您找到黑色区域的原因有所帮助
1) [TilesOverlay.java] 向您的 Tile Provider #Line 168 请求具有坐标 (x,y) 和缩放因子的图块
2)[MapTileProviderArray](如果是其他提供者,您需要在其中找到方法“getMapTile”)将尝试加载正确的图块#Line 121
3) [MapTileModuleProviderBase] 会将请求发送到您的特定图块提供商-在您的情况下,我猜是文件存档提供商#Line 241
4) [MapTileFileArchiveProvider] 从您的 mbtiles 数据库 #Line 210 & 169 获取数据的输入流
5) [MBTilesFileArchive] 为请求的图块读取数据库#Line 56
6) [MapTileFileArchiveProvider] 从您指定的 tileSource #Line 215 请求位图
7) [BitmapTileSourceBase] 使用Android Class BitmapFactory创建Bitmap #Line 130
8) [MapTileModuleProviderBase] 将 Bitmap (#Line 210) 传递给您的 Provider [MapTileProviderArray] (#Line 135),最后 [MapTileProviderBase] 将 Bitmap 添加到缓存并发送消息以重绘 Tiles (#Line 108 & 113)
由于缓存适用于来自每个 tilesource 和提供者的位图,我认为您的问题不会更进一步。如果问题出在位图的缓存中,那么整个 osmdroid 系统中根本就没有任何透明图块。所以猜测你的问题是在这些步骤之间的某个地方。
我希望这可以帮助您找到问题。
问候
PS:因为我通常不在这里发帖,所以我没有帐户,只能提供 2 个链接。我提到的所有文件都可以在这里找到:osmdroid trunk