Android 运行Osmdroid时交换和加载磁贴

Android 运行Osmdroid时交换和加载磁贴,android,osmdroid,Android,Osmdroid,我目前正在使用osmdroid和zip格式的离线地图,我想在我的应用程序运行时,将已加载的磁贴替换为新的磁贴。但是,我不知道如何在不退出应用程序的情况下加载新的磁贴 当我已经为该区域加载了磁贴时,如何强制osmdroid从磁盘检索和加载磁贴 如果有帮助的话,下面是我最初加载磁贴时使用的代码: File osmDir = new File("/mnt/sdcard/osmdroid"); File[] mapZips = osmDir.listFiles(new ZipFileFilter());

我目前正在使用osmdroid和zip格式的离线地图,我想在我的应用程序运行时,将已加载的磁贴替换为新的磁贴。但是,我不知道如何在不退出应用程序的情况下加载新的磁贴

当我已经为该区域加载了磁贴时,如何强制osmdroid从磁盘检索和加载磁贴

如果有帮助的话,下面是我最初加载磁贴时使用的代码:

File osmDir = new File("/mnt/sdcard/osmdroid");
File[] mapZips = osmDir.listFiles(new ZipFileFilter());

List<MapTileModuleProviderBase> overlayFileProvider = new ArrayList<MapTileModuleProviderBase>(mapZips.length);
myTileSource overlayFileTileSource = null;
IArchiveFile[] overlayFileArchive = new IArchiveFile[1];
for (File zip : mapZips)
{
overlayFileArchive[0] = ArchiveFileFactory.getArchiveFile(zip);
overlayFileTileSource = new myTileSource("MapquestOSM", null, 18, 18, 256, ".png");
overlayFileProvider.add(new MapTileFileArchiveProvider(new SimpleRegisterReceiver(getApplicationContext()), overlayFileTileSource, overlayFileArchive));
}

MapTileModuleProviderBase[] overlayFileProvider2 = new MapTileModuleProviderBase[overlayFileProvider.size()];
MapTileProviderArray overlayFileProviderArray1 = new MapTileProviderArray(overlayFileTileSource, null, overlayFileProvider.toArray(overlayFileProvider2));
        overlayFileProviderArray1.setTileRequestCompleteHandler(mapView.getTileRequestCompleteHandler());
    myTilesOverlay = new TilesOverlay(overlayFileProviderArray1, getApplicationContext());
File osmDir=新文件(“/mnt/sdcard/osmdroid”);
文件[]mapZips=osmDir.listFiles(新的ZipFileFilter());
List overlayFileProvider=新的ArrayList(mapZips.length);
myTileSource overlayFileTileSource=null;
IArchiveFile[]overlayFileArchive=新的IArchiveFile[1];
用于(文件zip:mapZips)
{
overlayFileArchive[0]=ArchiveFileFactory.getArchiveFile(zip);
overlayFileTileSource=新的myTileSource(“MapquestOSM”,null,18,18,256,.png”);
添加(新的MapTileFileFileProvider(新的SimpleRegisterReceiver(getApplicationContext()),overlayFileTileSource,overlayFileArchive));
}
MapTileModuleProviderBase[]overlayFileProvider2=新的MapTileModuleProviderBase[overlayFileProvider.size()];
MapTileProviderArray OverlayFileProviderArray 1=新的MapTileProviderArray(OverlayFileProviderSource,null,overlayFileProvider.toArray(overlayFileProvider2));
overlayFileProviderArray1.SetTilereRequestCompleteHandler(mapView.getTileRequestCompleteHandler());
MyTileOverlay=新的TileOverlay(overlayFileProviderArray1,getApplicationContext());

老实说,我还不完全理解这段代码的来龙去脉,如果有人知道解释在哪里,我也会很感激。

当我的应用程序更改地图分幅时,它只会重新启动显示地图的
活动。这是低效的,但至少是有效的

这也是一篇关于下载地图的帖子,可能会有帮助。