package com.arman.osmdroidmapsforge.map;
import java.io.File;
import org.osmdroid.tileprovider.IRegisterReceiver;
import org.osmdroid.tileprovider.MapTileRequestState;
import org.osmdroid.tileprovider.modules.MapTileFileStorageProviderBase;
import org.osmdroid.tileprovider.modules.MapTileModuleProviderBase;
import org.osmdroid.tileprovider.tilesource.ITileSource;
import android.graphics.drawable.Drawable;
public class MFTileModuleProvider extends MapTileFileStorageProviderBase{
protected MFTileSource tileSource;
/**
* Constructor
*
* @param pRegisterReceiver
* @param file
* @param tileSource
*/
public MFTileModuleProvider(IRegisterReceiver receiverRegistrar, File file, MFTileSource tileSource) {
super(receiverRegistrar, NUMBER_OF_TILE_FILESYSTEM_THREADS, TILE_FILESYSTEM_MAXIMUM_QUEUE_SIZE);
this.tileSource = tileSource;
}
@Override
protected String getName() {
return "MapsforgeTiles Provider";
}
@Override
protected String getThreadGroupName() {
return "mapsforgetilesprovider";
}
@Override
protected Runnable getTileLoader() {
return new TileLoader();
}
@Override
public boolean getUsesDataConnection() {
return false;
}
@Override
public int getMinimumZoomLevel() {
return tileSource.getMinimumZoomLevel();
}
@Override
public int getMaximumZoomLevel() {
return tileSource.getMaximumZoomLevel();
}
@Override
public void setTileSource(ITileSource tileSource) {
//prevent re-assignment of tile source
if (tileSource instanceof MFTileSource) {
this.tileSource = (MFTileSource) tileSource;
}
}
private class TileLoader extends MapTileModuleProviderBase.TileLoader {
@Override
public Drawable loadTile(final MapTileRequestState pState) {
return tileSource.renderTile(pState.getMapTile());
}
}
}