diff options
Diffstat (limited to 'src/cgeo/geocaching/mapcommon/cgeomap.java')
| -rw-r--r-- | src/cgeo/geocaching/mapcommon/cgeomap.java | 22 |
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."); } |
