API: allow changing number of TileLoader threads

This commit is contained in:
Hannes Janetzek 2014-05-04 21:59:03 +02:00
parent 9bd327cbe6
commit 37ffdadf1a
4 changed files with 19 additions and 8 deletions

View File

@ -82,8 +82,7 @@ public class TileRenderTest extends GdxMap {
final VectorTileLoader[] tileLoader = { null }; final VectorTileLoader[] tileLoader = { null };
VectorTileLayer l = new VectorTileLayer(mMap, tileManager, VectorTileLayer l = new VectorTileLayer(mMap, tileManager,
new VectorTileRenderer(), 1) { new VectorTileRenderer()) {
protected TileLoader createLoader() { protected TileLoader createLoader() {
tileLoader[0] = new VectorTileLoader(this) { tileLoader[0] = new VectorTileLoader(this) {

View File

@ -24,10 +24,15 @@ import org.oscim.map.Map.UpdateListener;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
/**
* TODO - add a TileLayer.Builder
*/
public abstract class TileLayer extends Layer implements UpdateListener { public abstract class TileLayer extends Layer implements UpdateListener {
static final Logger log = LoggerFactory.getLogger(TileLayer.class); static final Logger log = LoggerFactory.getLogger(TileLayer.class);
private static final int NUM_LOADERS = 4;
/** /**
* TileManager responsible for adding visible tiles * TileManager responsible for adding visible tiles
* to load queue and managing in-memory tile cache. * to load queue and managing in-memory tile cache.
@ -60,11 +65,18 @@ public abstract class TileLayer extends Layer implements UpdateListener {
} }
} }
/**
* Override to set number of loader threads. Default is 4.
*/
protected int getNumLoaders() {
return NUM_LOADERS;
}
@Override @Override
public void onMapEvent(Event event, MapPosition mapPosition) { public void onMapEvent(Event event, MapPosition mapPosition) {
if (event == Map.CLEAR_EVENT) { if (event == Map.CLEAR_EVENT) {
// sync with TileRenderer /* sync with TileRenderer */
synchronized (mRenderer) { synchronized (mRenderer) {
tileRenderer().clearTiles(); tileRenderer().clearTiles();
mTileManager.init(); mTileManager.init();

View File

@ -62,7 +62,7 @@ public class BitmapTileLayer extends TileLayer {
new VectorTileRenderer()); new VectorTileRenderer());
mTileSource = tileSource; mTileSource = tileSource;
initLoader(4); initLoader(getNumLoaders());
} }
@Override @Override

View File

@ -46,21 +46,21 @@ public class VectorTileLayer extends TileLayer {
tileSource.getZoomLevelMin(), tileSource.getZoomLevelMin(),
tileSource.getZoomLevelMax(), tileSource.getZoomLevelMax(),
100), 100),
new VectorTileRenderer(), 2); new VectorTileRenderer());
setTileSource(tileSource); setTileSource(tileSource);
} }
public VectorTileLayer(Map map, int minZoom, int maxZoom, int cacheLimit) { public VectorTileLayer(Map map, int minZoom, int maxZoom, int cacheLimit) {
this(map, new TileManager(map, minZoom, maxZoom, cacheLimit), this(map, new TileManager(map, minZoom, maxZoom, cacheLimit),
new VectorTileRenderer(), 4); new VectorTileRenderer());
} }
public VectorTileLayer(Map map, TileManager tileManager, public VectorTileLayer(Map map, TileManager tileManager,
VectorTileRenderer renderer, int numLoaders) { VectorTileRenderer renderer) {
super(map, tileManager, renderer); super(map, tileManager, renderer);
initLoader(numLoaders); initLoader(getNumLoaders());
} }
@Override @Override