gdx: pass TileSource to GdxMap constructor

This commit is contained in:
Hannes Janetzek 2013-07-01 04:21:49 +02:00
parent a35abdb2cf
commit 75e4d36945

View File

@ -11,11 +11,11 @@ import org.oscim.renderer.GLRenderer;
import org.oscim.renderer.GLState;
import org.oscim.theme.InternalRenderTheme;
import org.oscim.tilesource.TileSource;
import org.oscim.tilesource.oscimap4.OSciMap4TileSource;
import org.oscim.view.MapRenderCallback;
import org.oscim.view.MapView;
import org.oscim.view.MapViewPosition;
import com.badlogic.gdx.Application;
import com.badlogic.gdx.ApplicationListener;
import com.badlogic.gdx.Gdx;
import com.badlogic.gdx.Input;
@ -30,10 +30,11 @@ public class GdxMap implements ApplicationListener, MapRenderCallback {
private final MapView mMapView;
private final GLRenderer mMapRenderer;
private final TileSource mTileSource;
public GdxMap() {
public GdxMap(TileSource tileSource) {
AssetAdapter.g = new GdxAssetAdapter();
mTileSource = tileSource;
mMapView = new MapView(this);
mMapRenderer = new GLRenderer(mMapView);
}
@ -48,29 +49,26 @@ public class GdxMap implements ApplicationListener, MapRenderCallback {
Gdx.graphics.setContinuousRendering(false);
if (Log.logger == null)
Log.logger = new GdxLog();
Gdx.app.log("gdx says", "Hi!");
Log.d("vtm says", "Hi!");
Log.logger = new GdxLog();
Gdx.app.setLogLevel(Application.LOG_DEBUG);
int w = Gdx.graphics.getWidth();
int h = Gdx.graphics.getHeight();
mWidth = w;
mHeight = h;
if (null == null) {
if (mTileSource != null) {
//TileSource tileSource = new OSciMap2TileSource();
//tileSource.setOption("url",
// "http://city.informatik.uni-bremen.de/osci/map-live");
TileSource tileSource = new OSciMap4TileSource();
tileSource.setOption("url",
"http://city.informatik.uni-bremen.de/osci/testing");
// TileSource tileSource = new OSciMap4TileSource();
// tileSource.setOption("url",
// "http://city.informatik.uni-bremen.de/osci/testing");
// TileSource tileSource = new TestTileSource();
// TileSource tileSource = new TestTileSource();
mMapLayer = mMapView.setBaseMap(tileSource);
mMapLayer = mMapView.setBaseMap(mTileSource);
mMapLayer.setRenderTheme(InternalRenderTheme.DEFAULT);
mMapView.getLayerManager().add(new BuildingOverlay(mMapView, mMapLayer.getTileLayer()));
@ -78,8 +76,11 @@ public class GdxMap implements ApplicationListener, MapRenderCallback {
}
// mMapView.setBaseMap(new BitmapTileLayer(mMapView,
// OpenStreetMapMapnik.INSTANCE));
//mMapView.setBackgroundMap(new BitmapTileLayer(mMapView,
// ArcGISWorldShaded.INSTANCE));
//mMapView.setBackgroundMap(new BitmapTileLayer(mMapView,
// OpenStreetMapMapnik.INSTANCE));
//mMapView.getLayerManager().add(new GenericOverlay(mMapView, new
// GridRenderLayer(mMapView)));
@ -113,8 +114,6 @@ public class GdxMap implements ApplicationListener, MapRenderCallback {
}
//private int fpsCnt = 0;
@Override
public void render() {
// Log.d("yo", )
@ -122,17 +121,13 @@ public class GdxMap implements ApplicationListener, MapRenderCallback {
// GLState.blend(false);
// GLState.test(false, false);
mMapRenderer.onDrawFrame();
if (mRenderRequest) {
mRenderRequest = false;
mMapRenderer.onDrawFrame();
}
// Gdx.gl20.glBindBuffer(GL20.GL_ARRAY_BUFFER, 0);
// Gdx.gl20.glBindBuffer(GL20.GL_ELEMENT_ARRAY_BUFFER, 0);
// int f = Gdx.graphics.getFramesPerSecond();
// if (f != fpsCnt) {
// Log.d("fps", ">" + f);
// fpsCnt = f;
// }
// fps.setText("fps: " + Gdx.graphics.getFramesPerSecond());
// ui.draw();
}
@ -145,6 +140,8 @@ public class GdxMap implements ApplicationListener, MapRenderCallback {
mMapView.getMapViewPosition().setViewport(w, h);
mMapRenderer.onSurfaceChanged(w, h);
renderMap();
}
@Override
@ -170,6 +167,7 @@ public class GdxMap implements ApplicationListener, MapRenderCallback {
mMapView.updateLayers();
// if (mClearMap) {
mRenderRequest = true;
Gdx.graphics.requestRendering();
mClearMap = false;
// }
@ -192,14 +190,19 @@ public class GdxMap implements ApplicationListener, MapRenderCallback {
@Override
public void updateMap(boolean forceRender) {
if (!mWaitRedraw) {
mWaitRedraw = true;
Gdx.app.postRunnable(mRedrawRequest);
}
}
private boolean mRenderRequest;
@Override
public void renderMap() {
mRenderRequest = true;
if (mClearMap)
updateMap(false);
else
@ -227,7 +230,7 @@ public class GdxMap implements ApplicationListener, MapRenderCallback {
}
private boolean mActiveScale;
private boolean mActiveTilt;
//private boolean mActiveTilt;
private boolean mActiveRotate;
private int mPosX, mPosY;
@ -302,9 +305,7 @@ public class GdxMap implements ApplicationListener, MapRenderCallback {
@Override
public boolean touchUp(int screenX, int screenY, int pointer, int button) {
// Log.d(TAG, "touch up " + pointer);
mActiveScale = false;
mActiveTilt = false;
mActiveRotate = false;
return false;
@ -314,7 +315,7 @@ public class GdxMap implements ApplicationListener, MapRenderCallback {
public boolean touchDragged(int screenX, int screenY, int pointer) {
boolean changed = false;
if (!(mActiveScale || mActiveRotate) )
if (!(mActiveScale || mActiveRotate))
return false;
if (mActiveScale) {
@ -331,18 +332,18 @@ public class GdxMap implements ApplicationListener, MapRenderCallback {
changed = true;
}
// if (!(mActiveRotate || mActiveTilt || mActiveScale)) {
// int dx = screenX - mPosX;
// int dy = screenY - mPosY;
// if (Math.abs(dx) > 0 || Math.abs(dy) > 0) {
// mMapPosition.moveMap(dx, dy);
// mPosX = screenX;
// mPosY = screenY;
// changed = true;
// }
// }
// if (!(mActiveRotate || mActiveTilt || mActiveScale)) {
// int dx = screenX - mPosX;
// int dy = screenY - mPosY;
// if (Math.abs(dx) > 0 || Math.abs(dy) > 0) {
// mMapPosition.moveMap(dx, dy);
// mPosX = screenX;
// mPosY = screenY;
// changed = true;
// }
// }
if (changed){
if (changed) {
updateMap(true);
}
return true;
@ -453,10 +454,6 @@ public class GdxMap implements ApplicationListener, MapRenderCallback {
@Override
public boolean zoom(float initialDistance, float distance) {
mayFling = false;
// float fx = mMapView.getWidth() / 2;
// float fy = mMapView.getHeight() / 2;
// mMapPosition.scaleMap(initialDistance / distance, fx, fy);
return false;
}
@ -481,17 +478,15 @@ public class GdxMap implements ApplicationListener, MapRenderCallback {
mBeginTilt = false;
mBeginRotate = false;
mBeginScale= false;
mBeginScale = false;
return true;
}
// Log.d(TAG, "pinch " + pointer1 + " " + pointer2);
float x1 = pointer1.x;
float y1 = pointer1.y;
float mx = x1 - mPrevX;
//float mx = x1 - mPrevX;
float my = y1 - mPrevY;
float x2 = pointer2.x;