diff options
Diffstat (limited to 'src/cgeo/geocaching/mapsforge/mfOverlay.java')
| -rw-r--r-- | src/cgeo/geocaching/mapsforge/mfOverlay.java | 38 |
1 files changed, 34 insertions, 4 deletions
diff --git a/src/cgeo/geocaching/mapsforge/mfOverlay.java b/src/cgeo/geocaching/mapsforge/mfOverlay.java index e015307..f764c6b 100644 --- a/src/cgeo/geocaching/mapsforge/mfOverlay.java +++ b/src/cgeo/geocaching/mapsforge/mfOverlay.java @@ -1,26 +1,56 @@ package cgeo.geocaching.mapsforge; +import java.util.concurrent.locks.Lock; +import java.util.concurrent.locks.ReentrantLock; + import org.mapsforge.android.maps.Overlay; import org.mapsforge.android.maps.Projection; +import android.app.Activity; import android.graphics.Canvas; import android.graphics.Point; +import cgeo.geocaching.cgSettings; +import cgeo.geocaching.mapcommon.cgMapMyOverlay; +import cgeo.geocaching.mapcommon.cgOverlayScale; import cgeo.geocaching.mapinterfaces.OverlayBase; import cgeo.geocaching.mapinterfaces.OverlayImpl; public class mfOverlay extends Overlay implements OverlayImpl { - private OverlayBase overlayBase; + private OverlayBase overlayBase = null; + private Lock lock = new ReentrantLock(); - public mfOverlay(OverlayBase overlayBaseIn) { - overlayBase = overlayBaseIn; + public mfOverlay(Activity activityIn, cgSettings settingsIn, OverlayImpl.overlayType ovlType) { + + switch (ovlType) { + case PositionOverlay: + overlayBase = new cgMapMyOverlay(settingsIn, activityIn, this); + break; + case ScaleOverlay: + overlayBase = new cgOverlayScale(activityIn, settingsIn, this); + } } @Override protected void drawOverlayBitmap(Canvas canvas, Point drawPosition, Projection projection, byte drawZoomLevel) { - overlayBase.drawOverlayBitmap(canvas, drawPosition, new mfMapProjection(projection), drawZoomLevel); + if (overlayBase != null) { + overlayBase.drawOverlayBitmap(canvas, drawPosition, new mfMapProjection(projection), drawZoomLevel); + } } + public OverlayBase getBase() { + return overlayBase; + } + + @Override + public void lock() { + lock.lock(); + } + + @Override + public void unlock() { + lock.unlock(); + } } |
