make TileLayer abstract and create TileLoaders in subclass

This commit is contained in:
Hannes Janetzek 2013-04-23 23:54:30 +02:00
parent 78f05992f4
commit 34065efb93
3 changed files with 17 additions and 14 deletions

View File

@ -44,11 +44,12 @@ public class MapTileLayer extends TileLayer<MapTileLoader> {
private final static String TAG = MapTileLayer.class.getName();
public MapTileLayer(MapView mapView) {
super(mapView, new TileLoader.Factory<MapTileLoader>(){
@Override
public MapTileLoader create(JobQueue q, TileManager tm) {
return new MapTileLoader(q, tm);
}});
super(mapView);
}
@Override
protected MapTileLoader createLoader(JobQueue q, TileManager tm) {
return new MapTileLoader(q, tm);
}
private MapOptions mMapOptions;

View File

@ -30,12 +30,12 @@ public class TestTileLayer extends TileLayer<TestTileLoader> {
final static String TAG = TestTileLayer.class.getName();
public TestTileLayer(MapView mapView) {
// create an TileLayer instance using TestTileLoader as TileLoader
super(mapView, new TileLoader.Factory<TestTileLoader>(){
@Override
public TestTileLoader create(JobQueue q, TileManager tm) {
return new TestTileLoader(q, tm);
}});
super(mapView);
}
@Override
protected TestTileLoader createLoader(JobQueue q, TileManager tm) {
return new TestTileLoader(q, tm);
}
static class TestTileLoader extends TileLoader {

View File

@ -20,7 +20,7 @@ import org.oscim.core.MapPosition;
import org.oscim.layers.Layer;
import org.oscim.view.MapView;
public class TileLayer<T extends TileLoader> extends Layer {
public abstract class TileLayer<T extends TileLoader> extends Layer {
//private final static String TAG = TileLayer.class.getName();
private boolean mClearMap = true;
@ -32,7 +32,7 @@ public class TileLayer<T extends TileLoader> extends Layer {
protected final int mNumTileLoader = 4;
protected final ArrayList<T> mTileLoader;
public TileLayer(MapView mapView, TileLoader.Factory<T> factory) {
public TileLayer(MapView mapView) {
super(mapView);
// TileManager responsible for adding visible tiles
@ -44,7 +44,7 @@ public class TileLayer<T extends TileLoader> extends Layer {
// Instantiate TileLoader threads
mTileLoader = new ArrayList<T>();
for (int i = 0; i < mNumTileLoader; i++) {
T tileGenerator = factory.create(mJobQueue, mTileManager);
T tileGenerator = createLoader(mJobQueue, mTileManager);
mTileLoader.add(tileGenerator);
tileGenerator.start();
}
@ -54,6 +54,8 @@ public class TileLayer<T extends TileLoader> extends Layer {
mLayer = new TileRenderLayer(mapView, mTileManager);
}
abstract protected T createLoader(JobQueue q, TileManager tm);
public TileRenderLayer getTileLayer() {
return (TileRenderLayer) mLayer;
}