OSMDroid, как заставить внешнего провайдера работать вместе с локальным?

Так что я'наконец-то получил osmdroid, работающий с локальным каталогом, но яЯ хотел бы загрузить плитки из Mapnik, если они отсутствуют локально. Я'я не уверен, что ям отсутствует.

Моя реализация выглядит следующим образом:

private MapView mapView = null;
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.osm_map);

    mapView = (MapView) findViewById(R.id.mapview);
    mapView.setBuiltInZoomControls(true);
    mapView.setMultiTouchControls(true);

    MapController mapController = mapView.getController();
    mapController.setZoom(5);
    GeoPoint point2 = new GeoPoint(55708545, 10006348);
    mapController.setCenter(point2);

    //TODO Save to SD
    AssetManager assetManager = getAssets();
    InputStream is;
    String fileName = "test.zip";
    String path = Environment.getExternalStorageDirectory() + File.separator + fileName;    //TODO Path to save it to
    try {
        is = assetManager.open(fileName);

        FileOutputStream fo = new FileOutputStream(path);

        byte[] b = new byte[1024];
        int length;
        while((length = is.read(b)) != -1) {
            fo.write(b, 0, length);
        }
        fo.flush();
        fo.close();
        is.close();
    } catch (IOException  e) {
        e.printStackTrace();
    }

    File tileFile = new File(path);
    IArchiveFile[] archives = new IArchiveFile[1];
    archives[0] = ArchiveFileFactory.getArchiveFile(tileFile);

    CustomTileSource customTiles = new CustomTileSource("Mapnik", null, 0, 24, 256, ".png");    // the name should match the name of the folder that is zipped

    MapTileModuleProviderBase[] providers = new MapTileModuleProviderBase[2];
    providers[0] = new MapTileFileArchiveProvider(new SimpleRegisterReceiver(getApplicationContext()), customTiles, archives);
    providers[1] =  new MapTileDownloader(TileSourceFactory.MAPNIK);
    mapView.setUseDataConnection(false);
    mapView.setTileSource(TileSourceFactory.MAPNIK);

    MapTileProviderArray tileProvider = new MapTileProviderArray(customTiles, null, providers);
    TilesOverlay tilesOverlay = new TilesOverlay(tileProvider, getApplicationContext());
    mapView.getOverlays().add(tilesOverlay);
    mapView.invalidate();
}

А ТАКЖЕ

public class CustomTileSource extends BitmapTileSourceBase {

    public CustomTileSource(String aName, string aResourceId,
            int aZoomMinLevel, int aZoomMaxLevel, int aTileSizePixels,
            String aImageFilenameEnding) {
        super(aName, aResourceId, aZoomMinLevel, aZoomMaxLevel, aTileSizePixels,
                aImageFilenameEnding);
    }

}

Ответы на вопрос(1)

Ваш ответ на вопрос