Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/363.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
Java OsmDroid交换机在线/离线提供程序_Java_Android_Osmdroid - Fatal编程技术网

Java OsmDroid交换机在线/离线提供程序

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

我正在使用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);
要切换到脱机模式,我尝试以下方法,效果良好:

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);
我没有错误,但我看不到瓷砖。我只看到网格线和灰色背景

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