我正在使用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。我只看到网格线和灰色背景
如何使用在线和离线提供商?