diff options
Diffstat (limited to 'src/cgeo/geocaching/mapcommon/cgMapMyOverlay.java')
| -rw-r--r-- | src/cgeo/geocaching/mapcommon/cgMapMyOverlay.java | 33 |
1 files changed, 22 insertions, 11 deletions
diff --git a/src/cgeo/geocaching/mapcommon/cgMapMyOverlay.java b/src/cgeo/geocaching/mapcommon/cgMapMyOverlay.java index cbf065c..b8c8723 100644 --- a/src/cgeo/geocaching/mapcommon/cgMapMyOverlay.java +++ b/src/cgeo/geocaching/mapcommon/cgMapMyOverlay.java @@ -6,10 +6,11 @@ import android.app.Activity; import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.graphics.Canvas; +import android.graphics.Matrix; import android.graphics.Paint; -import android.graphics.Paint.Style; import android.graphics.PaintFlagsDrawFilter; import android.graphics.Point; +import android.graphics.Paint.Style; import android.location.Location; import cgeo.geocaching.R; import cgeo.geocaching.cgBase; @@ -19,6 +20,7 @@ import cgeo.geocaching.mapinterfaces.MapFactory; import cgeo.geocaching.mapinterfaces.MapProjectionImpl; import cgeo.geocaching.mapinterfaces.MapViewImpl; import cgeo.geocaching.mapinterfaces.OverlayBase; +import cgeo.geocaching.mapinterfaces.OverlayImpl; public class cgMapMyOverlay implements OverlayBase { private cgSettings settings = null; @@ -31,8 +33,8 @@ public class cgMapMyOverlay implements OverlayBase { private Point center = new Point(); private Point left = new Point(); private Bitmap arrow = null; - private int widthArrow = 0; - private int heightArrow = 0; + private int widthArrowHalf = 0; + private int heightArrowHalf = 0; private PaintFlagsDrawFilter setfil = null; private PaintFlagsDrawFilter remfil = null; private Location historyRecent = null; @@ -41,11 +43,13 @@ public class cgMapMyOverlay implements OverlayBase { private Point historyPointP = new Point(); private Activity activity; private MapFactory mapFactory = null; + private OverlayImpl ovlImpl = null; - public cgMapMyOverlay(cgSettings settingsIn, Activity activity) { + public cgMapMyOverlay(cgSettings settingsIn, Activity activity, OverlayImpl ovlImpl) { settings = settingsIn; this.activity = activity; this.mapFactory = settings.getMapFactory(); + this.ovlImpl = ovlImpl; } public void setCoordinates(Location coordinatesIn) { @@ -184,22 +188,29 @@ public class cgMapMyOverlay implements OverlayBase { if (arrow == null) { arrow = BitmapFactory.decodeResource(activity.getResources(), R.drawable.my_location_chevron); - widthArrow = arrow.getWidth(); - heightArrow = arrow.getHeight(); + widthArrowHalf = arrow.getWidth() / 2; + heightArrowHalf = arrow.getHeight() / 2; } int marginLeft; int marginTop; - marginLeft = center.x - (widthArrow / 2); - marginTop = center.y - (heightArrow / 2); + marginLeft = center.x - widthArrowHalf; + marginTop = center.y - heightArrowHalf; + + Matrix matrix = new Matrix(); + matrix.setRotate(heading.floatValue(), widthArrowHalf, heightArrowHalf); + matrix.postTranslate(marginLeft, marginTop); - canvas.rotate(heading.floatValue(), center.x, center.y); - canvas.drawBitmap(arrow, marginLeft, marginTop, null); - canvas.rotate(-(heading.floatValue()), center.x, center.y); + canvas.drawBitmap(arrow, matrix, null); canvas.setDrawFilter(remfil); //super.draw(canvas, mapView, shadow); } + + @Override + public OverlayImpl getOverlayImpl() { + return this.ovlImpl; + } }
\ No newline at end of file |
