Java OsmDroid交换机在线/离线提供程序
我正在使用OsmDroid在我的应用程序中显示在线和离线数据。脱机数据存储在.sqlite文件中 默认使用为联机,MapView工作正常:Java OsmDroid交换机在线/离线提供程序,java,android,osmdroid,Java,Android,Osmdroid,我正在使用OsmDroid在我的应用程序中显示在线和离线数据。脱机数据存储在.sqlite文件中 默认使用为联机,MapView工作正常: m_mapView = new MapView(inflater.Context); var tileSource = TileSourceFactory.GetTileSource(TileSourceFactory.DefaultTileSource.Name()); m_mapView.SetUseDataConnection(true); m_map
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);
要切换到脱机模式,我尝试以下方法,效果良好:
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);
我没有错误,但我看不到瓷砖。我只看到网格线和灰色背景
如何使用在线和离线提供商