aboutsummaryrefslogtreecommitdiffstats
path: root/src/cgeo/geocaching/mapcommon/cgMapMyOverlay.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/cgeo/geocaching/mapcommon/cgMapMyOverlay.java')
-rw-r--r--src/cgeo/geocaching/mapcommon/cgMapMyOverlay.java33
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