refactor and document Map

- merge Layers into Map
- change UpdateEvent to Map.UpdateListener
- make updateLayers protected
This commit is contained in:
Hannes Janetzek
2013-09-17 22:35:41 +02:00
parent 9a82c24a89
commit 4f1b3f262b
10 changed files with 294 additions and 360 deletions

View File

@@ -19,8 +19,6 @@ import java.net.URL;
import org.oscim.backend.canvas.Bitmap;
import org.oscim.core.MapPosition;
import org.oscim.core.Tile;
import org.oscim.event.MapEvent;
import org.oscim.event.UpdateEvent;
import org.oscim.gdx.client.GwtBitmap;
import org.oscim.layers.tile.TileLayer;
import org.oscim.layers.tile.bitmap.TileSource.FadeStep;
@@ -50,66 +48,33 @@ public class BitmapTileLayer extends TileLayer<TileLoader> {
mFade = mTileSource.getFadeSteps();
}
// @Override
// public void onUpdate(MapPosition pos, boolean changed, boolean clear) {
// super.onUpdate(pos, changed, clear);
//
// if (mFade == null) {
// mRenderLayer.setBitmapAlpha(1);
// return;
// }
//
// float alpha = 0;
// for (FadeStep f : mFade) {
// if (pos.scale < f.scaleStart || pos.scale > f.scaleEnd)
// continue;
//
// if (f.alphaStart == f.alphaEnd) {
// alpha = f.alphaStart;
// break;
// }
// double range = f.scaleEnd / f.scaleStart;
// float a = (float)((range - (pos.scale / f.scaleStart)) / range);
// a = FastMath.clamp(a, 0, 1);
// // interpolate alpha between start and end
// alpha = a * f.alphaStart + (1 - a) * f.alphaEnd;
// break;
// }
//
// mRenderLayer.setBitmapAlpha(alpha);
// }
@Override
public void handleEvent(MapEvent event) {
super.handleEvent(event);
public void onMapUpdate(MapPosition pos, boolean changed, boolean clear) {
super.onMapUpdate(pos, changed, clear);
if (event instanceof UpdateEvent) {
if (mFade == null) {
mRenderLayer.setBitmapAlpha(1);
return;
}
if (mFade == null) {
mRenderLayer.setBitmapAlpha(1);
return;
}
MapPosition pos = mMap.getMapPosition();
float alpha = 0;
for (FadeStep f : mFade) {
if (pos.scale < f.scaleStart || pos.scale > f.scaleEnd)
continue;
float alpha = 0;
for (FadeStep f : mFade) {
if (pos.scale < f.scaleStart || pos.scale > f.scaleEnd)
continue;
if (f.alphaStart == f.alphaEnd) {
alpha = f.alphaStart;
break;
}
double range = f.scaleEnd / f.scaleStart;
float a = (float) ((range - (pos.scale / f.scaleStart)) / range);
a = FastMath.clamp(a, 0, 1);
// interpolate alpha between start and end
alpha = a * f.alphaStart + (1 - a) * f.alphaEnd;
if (f.alphaStart == f.alphaEnd) {
alpha = f.alphaStart;
break;
}
mRenderLayer.setBitmapAlpha(alpha);
double range = f.scaleEnd / f.scaleStart;
float a = (float) ((range - (pos.scale / f.scaleStart)) / range);
a = FastMath.clamp(a, 0, 1);
// interpolate alpha between start and end
alpha = a * f.alphaStart + (1 - a) * f.alphaEnd;
break;
}
mRenderLayer.setBitmapAlpha(alpha);
}
@Override