我正在使用OsmDroid在我的应用程序中显示在线和离线数据 . 脱机数据存储在.sqlite文件中 .

默认使用是在线,MapView运行良好:

m_mapView = new MapView(inflater.Context);
var tileSource = TileSourceFactory.GetTileSource(TileSourceFactory.DefaultTileSource.Name());
m_mapView.SetUseDataConnection(true);
m_mapView.TilesScaledToDpi = true;
m_mapView.SetTileSource(tileSource);

要切换到离线模式,我试试这个并运作良好:

OfflineTileProvider m_OfflineTileProvider = new OfflineTileProvider(new SimpleRegisterReceiver(Activity), new File[] { f });
m_mapView.TileProvider = m_OfflineTileProvider;

string source = "";
IArchiveFile[] archives = m_OfflineTileProvider.GetArchives();
if (archives.Length > 0)
{
    List<string> tileSources = archives[0].TileSources.ToList<string>();
    if (tileSources.Count > 0)
    {
        m_mapView.SetUseDataConnection(false);
        source = tileSources[0];
        ITileSource tilesource = FileBasedTileSource.GetSource(source);
        if (tilesource != null)
            this.m_mapView.SetTileSource(tilesource);
        else
            this.m_mapView.SetTileSource(TileSourceFactory.DefaultTileSource);
    }
    else
    {
        this.m_mapView.SetTileSource(TileSourceFactory.DefaultTileSource);
    }

}
else
    this.m_mapView.SetTileSource(TileSourceFactory.DefaultTileSource);

问题是返回在线模式:

var tileSource = TileSourceFactory.GetTileSource(TileSourceFactory.DefaultTileSource.Name());
m_mapView.SetUseDataConnection(true);
m_mapView.SetTileSource(tileSource);

我没有错误,但我没有看到Tiles . 我只看到网格线和灰色背景

我如何使用在线和离线提供商?