diff options
Diffstat (limited to 'main/src/cgeo/geocaching/maps/DirectionDrawer.java')
-rw-r--r-- | main/src/cgeo/geocaching/maps/DirectionDrawer.java | 60 |
1 files changed, 60 insertions, 0 deletions
diff --git a/main/src/cgeo/geocaching/maps/DirectionDrawer.java b/main/src/cgeo/geocaching/maps/DirectionDrawer.java new file mode 100644 index 0000000..c746221 --- /dev/null +++ b/main/src/cgeo/geocaching/maps/DirectionDrawer.java @@ -0,0 +1,60 @@ +package cgeo.geocaching.maps; + +import cgeo.geocaching.CgeoApplication; +import cgeo.geocaching.location.Geopoint; +import cgeo.geocaching.maps.interfaces.MapItemFactory; +import cgeo.geocaching.maps.interfaces.MapProjectionImpl; +import cgeo.geocaching.settings.Settings; + +import android.content.Context; +import android.graphics.Canvas; +import android.graphics.Paint; +import android.graphics.Point; +import android.location.Location; +import android.util.DisplayMetrics; +import android.view.WindowManager; + +public class DirectionDrawer { + private Geopoint currentCoords; + private final Geopoint destinationCoords; + private final MapItemFactory mapItemFactory; + private final float width; + + private Paint line = null; + + public DirectionDrawer(final Geopoint coords) { + this.destinationCoords = coords; + this.mapItemFactory = Settings.getMapProvider().getMapItemFactory(); + + final DisplayMetrics metrics = new DisplayMetrics(); + final WindowManager windowManager = (WindowManager) CgeoApplication.getInstance().getSystemService(Context.WINDOW_SERVICE); + windowManager.getDefaultDisplay().getMetrics(metrics); + + width = 4f * metrics.density; + + } + + public void setCoordinates(final Location coordinatesIn) { + currentCoords = new Geopoint(coordinatesIn); + } + + void drawDirection(final Canvas canvas, final MapProjectionImpl projection) { + if (currentCoords == null) { + return; + } + + if (line == null) { + line = new Paint(); + line.setAntiAlias(true); + line.setStrokeWidth(width); + line.setColor(0x80EB391E); + } + + final Point pos = new Point(); + final Point dest = new Point(); + projection.toPixels(mapItemFactory.getGeoPointBase(currentCoords), pos); + projection.toPixels(mapItemFactory.getGeoPointBase(destinationCoords), dest); + + canvas.drawLine(pos.x, pos.y, dest.x, dest.y, line); + } +} |