rename Viewport.getMapViewProjection to getMapExtents

- add parameter to increase extents
This commit is contained in:
Hannes Janetzek 2014-02-04 13:41:52 +01:00
parent dd954e3416
commit ebaffdb123
5 changed files with 21 additions and 16 deletions

View File

@ -102,14 +102,7 @@ public abstract class ItemizedLayer<Item extends MarkerItem> extends MarkerLayer
int changedVisible = 0; int changedVisible = 0;
int numVisible = 0; int numVisible = 0;
mMap.getViewport().getMapViewProjection(mBox); mMap.getViewport().getMapExtents(mBox, mExtents);
for (int i = 0; i < 8; i += 2) {
float x = mBox[i];
float y = mBox[i + 1];
float len = (float) Math.sqrt(x * x + y * y);
mBox[i + 0] += x / len * mExtents;
mBox[i + 1] += y / len * mExtents;
}
long flip = (long) (Tile.SIZE * pos.scale) >> 1; long flip = (long) (Tile.SIZE * pos.scale) >> 1;

View File

@ -149,8 +149,9 @@ public class Viewport {
* to screen corners by current view-projection-matrix. * to screen corners by current view-projection-matrix.
* *
* @param box float[8] will be set. * @param box float[8] will be set.
* @param add increase extents of box
*/ */
public synchronized void getMapViewProjection(float[] box) { public synchronized void getMapExtents(float[] box, float add) {
float t = getDepth(1); float t = getDepth(1);
float t2 = getDepth(-1); float t2 = getDepth(-1);
@ -162,6 +163,17 @@ public class Viewport {
unproject(-1, 1, t2, box, 4); unproject(-1, 1, t2, box, 4);
// bottom-right // bottom-right
unproject(1, 1, t2, box, 6); unproject(1, 1, t2, box, 6);
if (add == 0)
return;
for (int i = 0; i < 8; i += 2) {
float x = box[i];
float y = box[i + 1];
float len = (float) Math.sqrt(x * x + y * y);
box[i + 0] += x / len * add;
box[i + 1] += y / len * add;
}
} }
/* /*
@ -237,7 +249,7 @@ public class Viewport {
*/ */
public synchronized void getViewBox(Box box) { public synchronized void getViewBox(Box box) {
float[] coords = mViewCoords; float[] coords = mViewCoords;
getMapViewProjection(coords); getMapExtents(coords, 0);
box.minX = coords[0]; box.minX = coords[0];
box.maxX = coords[0]; box.maxX = coords[0];

View File

@ -56,7 +56,7 @@ public class MapRenderer {
/** Do not modify! */ /** Do not modify! */
public final GLMatrix view = new GLMatrix(); public final GLMatrix view = new GLMatrix();
/** Do not modify! */ /** Do not modify! */
public final float[] mapPlane = new float[8]; public final float[] plane = new float[8];
/** For temporary use, to setup MVP-Matrix */ /** For temporary use, to setup MVP-Matrix */
public final GLMatrix mvp = new GLMatrix(); public final GLMatrix mvp = new GLMatrix();
@ -247,7 +247,7 @@ public class MapRenderer {
changed = viewport.getMapPosition(pos); changed = viewport.getMapPosition(pos);
if (changed) if (changed)
viewport.getMapViewProjection(mMatrices.mapPlane); viewport.getMapExtents(mMatrices.plane, 0);
viewport.getMatrix(mMatrices.view, mMatrices.proj, mMatrices.viewproj); viewport.getMatrix(mMatrices.view, mMatrices.proj, mMatrices.viewproj);

View File

@ -189,7 +189,7 @@ public class TileManager {
jobQueue.clear(); jobQueue.clear();
// load some tiles more than currently visible (* 0.75) // load some tiles more than currently visible (* 0.75)
double scale = pos.scale * 0.9f; //double scale = pos.scale * 0.9f;
int tileZoom = FastMath.clamp(pos.zoomLevel, mMinZoom, mMaxZoom); int tileZoom = FastMath.clamp(pos.zoomLevel, mMinZoom, mMaxZoom);
@ -205,12 +205,12 @@ public class TileManager {
tileZoom = match; tileZoom = match;
} }
mViewport.getMapViewProjection(mMapPlane); mViewport.getMapExtents(mMapPlane, Tile.SIZE / 2);
// scan visible tiles. callback function calls 'addTile' // scan visible tiles. callback function calls 'addTile'
// which updates mNewTiles // which updates mNewTiles
mNewTiles.cnt = 0; mNewTiles.cnt = 0;
mScanBox.scan(pos.x, pos.y, scale, tileZoom, mMapPlane); mScanBox.scan(pos.x, pos.y, pos.scale, tileZoom, mMapPlane);
MapTile[] newTiles = mNewTiles.tiles; MapTile[] newTiles = mNewTiles.tiles;
int newCnt = mNewTiles.cnt; int newCnt = mNewTiles.cnt;

View File

@ -124,7 +124,7 @@ public class TileRenderer extends LayerRenderer {
MapTile[] tiles = mDrawTiles.tiles; MapTile[] tiles = mDrawTiles.tiles;
if (tilesChanged || changed) { if (tilesChanged || changed) {
updateTileVisibility(pos, m.mapPlane); updateTileVisibility(pos, m.plane);
} }
tileCnt += mNumTileHolder; tileCnt += mNumTileHolder;