aboutsummaryrefslogtreecommitdiffstats
path: root/src/cgeo/geocaching/mapcommon/cgeomap.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/cgeo/geocaching/mapcommon/cgeomap.java')
-rw-r--r--src/cgeo/geocaching/mapcommon/cgeomap.java22
1 files changed, 13 insertions, 9 deletions
diff --git a/src/cgeo/geocaching/mapcommon/cgeomap.java b/src/cgeo/geocaching/mapcommon/cgeomap.java
index 474b881..8500e1c 100644
--- a/src/cgeo/geocaching/mapcommon/cgeomap.java
+++ b/src/cgeo/geocaching/mapcommon/cgeomap.java
@@ -28,13 +28,13 @@ import cgeo.geocaching.cgCoord;
import cgeo.geocaching.cgDirection;
import cgeo.geocaching.cgGeo;
import cgeo.geocaching.cgSettings;
-import cgeo.geocaching.cgSettings.mapSourceEnum;
import cgeo.geocaching.cgUpdateDir;
import cgeo.geocaching.cgUpdateLoc;
import cgeo.geocaching.cgUser;
import cgeo.geocaching.cgWaypoint;
import cgeo.geocaching.cgeoapplication;
import cgeo.geocaching.activity.ActivityMixin;
+import cgeo.geocaching.cgSettings.mapSourceEnum;
import cgeo.geocaching.mapinterfaces.ActivityImpl;
import cgeo.geocaching.mapinterfaces.CacheOverlayItemImpl;
import cgeo.geocaching.mapinterfaces.GeoPointImpl;
@@ -269,8 +269,7 @@ public class cgeomap extends MapBase {
mapView.clearOverlays();
if (overlayMyLoc == null) {
- overlayMyLoc = new cgMapMyOverlay(settings, activity);
- mapView.addOverlay(mapFactory.getOverlayBaseWrapper(overlayMyLoc));
+ overlayMyLoc = mapView.createAddPositionOverlay(activity, settings);
}
if (settings.publicLoc > 0 && overlayUsers == null) {
@@ -282,8 +281,7 @@ public class cgeomap extends MapBase {
}
if (overlayScale == null && mapView.needsScaleOverlay()) {
- overlayScale = new cgOverlayScale(activity, settings);
- mapView.addOverlay(mapFactory.getOverlayBaseWrapper(overlayScale));
+ overlayScale = mapView.createAddScaleOverlay(activity, settings);
}
mapView.invalidate();
@@ -747,9 +745,10 @@ public class cgeomap extends MapBase {
}
try {
+ boolean repaintRequired = false;
+
if (overlayMyLoc == null && mapView != null) {
- overlayMyLoc = new cgMapMyOverlay(settings, activity);
- mapView.addOverlay(settings.getMapFactory().getOverlayBaseWrapper(overlayMyLoc));
+ overlayMyLoc = mapView.createAddPositionOverlay(activity, settings);
}
if (overlayMyLoc != null && geo.location != null) {
@@ -760,8 +759,7 @@ public class cgeomap extends MapBase {
if (followMyLocation) {
myLocationInMiddle();
} else {
- // move blue arrow
- mapView.invalidate();
+ repaintRequired = true;
}
}
@@ -771,7 +769,13 @@ public class cgeomap extends MapBase {
} else {
overlayMyLoc.setHeading(Double.valueOf(0));
}
+ repaintRequired = true;
+ }
+
+ if (repaintRequired) {
+ mapView.repaintRequired(overlayMyLoc);
}
+
} catch (Exception e) {
Log.w(cgSettings.tag, "Failed to update location.");
}