aboutsummaryrefslogtreecommitdiffstats
path: root/src/cgeo/geocaching/mapsforge/mfMapView.java
diff options
context:
space:
mode:
authorrsudev <rasch@munin-soft.de>2011-08-22 08:00:15 +0200
committerrsudev <rasch@munin-soft.de>2011-08-22 08:00:15 +0200
commit119dd86b0df044c76b9dfaf2414429fa4ad681f3 (patch)
tree2ec2c9efae2233c33706b2af8152c92ff8aa91cb /src/cgeo/geocaching/mapsforge/mfMapView.java
parent2af3798e6bcb2f5a572c8a61860aa41fe43e93ff (diff)
downloadcgeo-119dd86b0df044c76b9dfaf2414429fa4ad681f3.zip
cgeo-119dd86b0df044c76b9dfaf2414429fa4ad681f3.tar.gz
cgeo-119dd86b0df044c76b9dfaf2414429fa4ad681f3.tar.bz2
Fix issue #15
mapsforge uses a different pattern for communicating updates for overlays
Diffstat (limited to 'src/cgeo/geocaching/mapsforge/mfMapView.java')
-rw-r--r--src/cgeo/geocaching/mapsforge/mfMapView.java39
1 files changed, 39 insertions, 0 deletions
diff --git a/src/cgeo/geocaching/mapsforge/mfMapView.java b/src/cgeo/geocaching/mapsforge/mfMapView.java
index de4bd1a..43aa954 100644
--- a/src/cgeo/geocaching/mapsforge/mfMapView.java
+++ b/src/cgeo/geocaching/mapsforge/mfMapView.java
@@ -7,19 +7,24 @@ import org.mapsforge.android.maps.MapViewMode;
import org.mapsforge.android.maps.Overlay;
import org.mapsforge.android.maps.Projection;
+import android.app.Activity;
import android.content.Context;
import android.graphics.Canvas;
import android.graphics.drawable.Drawable;
import android.util.AttributeSet;
import android.util.Log;
import cgeo.geocaching.cgSettings;
+import cgeo.geocaching.mapcommon.cgMapMyOverlay;
import cgeo.geocaching.mapcommon.cgMapOverlay;
+import cgeo.geocaching.mapcommon.cgOverlayScale;
import cgeo.geocaching.mapcommon.cgUsersOverlay;
import cgeo.geocaching.mapinterfaces.GeoPointImpl;
import cgeo.geocaching.mapinterfaces.MapControllerImpl;
import cgeo.geocaching.mapinterfaces.MapProjectionImpl;
import cgeo.geocaching.mapinterfaces.MapViewImpl;
+import cgeo.geocaching.mapinterfaces.OverlayBase;
import cgeo.geocaching.mapinterfaces.OverlayImpl;
+import cgeo.geocaching.mapinterfaces.OverlayImpl.overlayType;
public class mfMapView extends MapView implements MapViewImpl {
@@ -88,6 +93,22 @@ public class mfMapView extends MapView implements MapViewImpl {
}
@Override
+ public cgMapMyOverlay createAddPositionOverlay(Activity activity,
+ cgSettings settingsIn) {
+ mfOverlay ovl = new mfOverlay(activity, settingsIn, overlayType.PositionOverlay);
+ getOverlays().add(ovl);
+ return (cgMapMyOverlay) ovl.getBase();
+ }
+
+ @Override
+ public cgOverlayScale createAddScaleOverlay(Activity activity,
+ cgSettings settingsIn) {
+ mfOverlay ovl = new mfOverlay(activity, settingsIn, overlayType.ScaleOverlay);
+ getOverlays().add(ovl);
+ return (cgOverlayScale) ovl.getBase();
+ }
+
+ @Override
public int getLatitudeSpan() {
int span = 0;
@@ -160,10 +181,28 @@ public class mfMapView extends MapView implements MapViewImpl {
if (MapDatabase.isValidMapFile(settings.getMapFile())) {
setMapViewMode(MapViewMode.CANVAS_RENDERER);
super.setMapFile(settings.getMapFile());
+ } else {
+ setMapViewMode(MapViewMode.MAPNIK_TILE_DOWNLOAD);
}
break;
default:
setMapViewMode(MapViewMode.MAPNIK_TILE_DOWNLOAD);
}
}
+
+ @Override
+ public void repaintRequired(OverlayBase overlay) {
+
+ try {
+ mfOverlay ovl = (mfOverlay) overlay.getOverlayImpl();
+
+ if (ovl != null) {
+ ovl.requestRedraw();
+ }
+
+ } catch (Exception e) {
+ Log.e(cgSettings.tag, "mfMapView.repaintRequired: " + e.toString());
+ }
+ }
+
}