fix draw label-only tiles (set MapTile state ready when there are no baselayer items)
This commit is contained in:
@@ -48,7 +48,7 @@ public class TileRenderLayer extends RenderLayer {
|
|||||||
@Override
|
@Override
|
||||||
public void update(MapPosition pos, boolean positionChanged, Matrices m) {
|
public void update(MapPosition pos, boolean positionChanged, Matrices m) {
|
||||||
|
|
||||||
mMapPosition.copy(pos);
|
//mMapPosition.copy(pos);
|
||||||
|
|
||||||
boolean tilesChanged;
|
boolean tilesChanged;
|
||||||
synchronized (tilelock) {
|
synchronized (tilelock) {
|
||||||
@@ -63,8 +63,9 @@ public class TileRenderLayer extends RenderLayer {
|
|||||||
MapTile[] tiles = mDrawTiles.tiles;
|
MapTile[] tiles = mDrawTiles.tiles;
|
||||||
|
|
||||||
if (tilesChanged || positionChanged){
|
if (tilesChanged || positionChanged){
|
||||||
updateTileVisibility(m.mapPlane);
|
updateTileVisibility(pos, m.mapPlane);
|
||||||
}
|
}
|
||||||
|
|
||||||
tileCnt += mNumTileHolder;
|
tileCnt += mNumTileHolder;
|
||||||
|
|
||||||
/* prepare tile for rendering */
|
/* prepare tile for rendering */
|
||||||
@@ -146,8 +147,9 @@ public class TileRenderLayer extends RenderLayer {
|
|||||||
private static int uploadTileData(MapTile tile) {
|
private static int uploadTileData(MapTile tile) {
|
||||||
tile.state = STATE_READY;
|
tile.state = STATE_READY;
|
||||||
|
|
||||||
|
// tile might contain extrusion or label layers
|
||||||
if (tile.layers == null)
|
if (tile.layers == null)
|
||||||
return 0;
|
return 1;
|
||||||
|
|
||||||
int newSize = tile.layers.getSize();
|
int newSize = tile.layers.getSize();
|
||||||
if (newSize > 0) {
|
if (newSize > 0) {
|
||||||
@@ -165,17 +167,17 @@ public class TileRenderLayer extends RenderLayer {
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
private final Object tilelock = new Object();
|
private final Object tilelock = new Object();
|
||||||
|
|
||||||
/** set tile isVisible flag true for tiles that intersect view */
|
/** set tile isVisible flag true for tiles that intersect view */
|
||||||
private void updateTileVisibility(float[] box) {
|
private void updateTileVisibility(MapPosition pos, float[] box) {
|
||||||
|
|
||||||
// lock tiles while updating isVisible state
|
// lock tiles while updating isVisible state
|
||||||
synchronized (tilelock) {
|
synchronized (tilelock) {
|
||||||
MapPosition pos = mMapPosition;
|
|
||||||
MapTile[] tiles = mDrawTiles.tiles;
|
MapTile[] tiles = mDrawTiles.tiles;
|
||||||
|
|
||||||
int tileZoom = tiles[0].zoomLevel;
|
int tileZoom = tiles[0].zoomLevel;
|
||||||
@@ -313,6 +315,10 @@ public class TileRenderLayer extends RenderLayer {
|
|||||||
if (tile == null)
|
if (tile == null)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
|
if (cnt + mNumTileHolder >= tiles.length){
|
||||||
|
Log.e(TAG, "too many tiles " + cnt + ", " + mNumTileHolder);
|
||||||
|
break;
|
||||||
|
}
|
||||||
holder = new MapTile(x, y, (byte) mZoom);
|
holder = new MapTile(x, y, (byte) mZoom);
|
||||||
holder.isVisible = true;
|
holder.isVisible = true;
|
||||||
holder.holder = tile;
|
holder.holder = tile;
|
||||||
|
|||||||
Reference in New Issue
Block a user