blob: c746221abd967572d80d6662e26cd57643406298 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
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);
}
}
|