package eu.hellek.viajafacil.android.map;
import java.util.List;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.graphics.Point;
import com.google.android.maps.GeoPoint;
import com.google.android.maps.MapView;
import com.google.android.maps.Overlay;
import com.google.android.maps.Projection;
/*
* Map Overlay to display a line (without stations)
*/
public class LineOverlay extends Overlay {
private List<GeoPoint> points;
private String color;
private int level;
public LineOverlay(List<GeoPoint> points, String color, int level) {
this.points = points;
this.color = color;
this.level = level;
}
@Override
public boolean draw(Canvas canvas, MapView mapView, boolean shadow, long when) {
Projection projection = mapView.getProjection();
int pointsSize = points.size();
if (shadow == false && pointsSize > 1) {
GeoPoint lastPoint = points.get(0);
for(int i = 1; i < pointsSize; i++) {
GeoPoint currentPoint = points.get(i);
Paint paint = new Paint();
paint.setAntiAlias(true);
Point point1 = new Point();
projection.toPixels(lastPoint, point1);
paint.setColor(Color.parseColor(color));
Point point2 = new Point();
projection.toPixels(currentPoint, point2);
if(level == 0) {
paint.setStrokeWidth(2);
paint.setAlpha(64);
} else {
paint.setStrokeWidth(3);
}
canvas.drawLine((float) point1.x, (float) point1.y, (float) point2.x, (float) point2.y, paint);
lastPoint = currentPoint;
}/*
GeoPoint lastPoint = points.get(0);
Path path = new Path();
for(int i = 1; i < pointsSize; i++) {
Paint paint = new Paint();
paint.setDither(true);
paint.setColor(Color.RED);
paint.setStyle(Paint.Style.FILL_AND_STROKE);
paint.setStrokeJoin(Paint.Join.ROUND);
paint.setStrokeCap(Paint.Cap.ROUND);
paint.setStrokeWidth(2);
Point point1 = new Point();
projection.toPixels(lastPoint, point1);
paint.setColor(Color.BLUE);
Point point2 = new Point();
projection.toPixels(points.get(i), point2);
paint.setStrokeWidth(2);
// canvas.drawLine((float) point.x, (float) point.y, (float) point2.x, (float) point2.y, paint);
path.moveTo(point1.x, point1.y);
path.lineTo(point2.x, point2.y);
canvas.drawPath(path, paint);
}*/
}
return super.draw(canvas, mapView, shadow, when);
}
@Override
public void draw(Canvas canvas, MapView mapView, boolean shadow) {
super.draw(canvas, mapView, shadow);
}
}