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 };
VectorTileLayer l = new VectorTileLayer(mMap, tileManager,
new VectorTileRenderer(), 1) {
new VectorTileRenderer()) {
protected TileLoader createLoader() {
tileLoader[0] = new VectorTileLoader(this) {

View File

@ -24,10 +24,15 @@ import org.oscim.map.Map.UpdateListener;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
/**
* TODO - add a TileLayer.Builder
*/
public abstract class TileLayer extends Layer implements UpdateListener {
static final Logger log = LoggerFactory.getLogger(TileLayer.class);
private static final int NUM_LOADERS = 4;
/**
* TileManager responsible for adding visible tiles
* 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
public void onMapEvent(Event event, MapPosition mapPosition) {
if (event == Map.CLEAR_EVENT) {
// sync with TileRenderer
/* sync with TileRenderer */
synchronized (mRenderer) {
tileRenderer().clearTiles();
mTileManager.init();

View File

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

View File

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