package eu.hellek.viajafacil.android.map; import android.graphics.Canvas; import android.graphics.Color; import android.graphics.Paint; import android.graphics.Paint.Align; 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; /* * Overlay that displays a station name */ public class StationOverlay extends Overlay { private static final int baseTextSize = 10; private String text; private GeoPoint gp; private int minZoom; private String color; public StationOverlay(String text, GeoPoint gp, String color, int minZoom) { this.text = text; this.gp = gp; this.minZoom = minZoom; this.color = color; } @Override public boolean draw(Canvas canvas, MapView mapView, boolean shadow, long when) { Projection projection = mapView.getProjection(); if (shadow == false && mapView.getZoomLevel() >= minZoom) { int zoomExtra = mapView.getZoomLevel() - minZoom; Paint rectPaint = new Paint(); Paint textPaint = new Paint(); Point point = new Point(); projection.toPixels(gp, point); rectPaint.setColor(Color.GRAY); rectPaint.setAlpha(128); rectPaint.setStrokeWidth(2); textPaint.setTextSize(baseTextSize + (zoomExtra * 2)); textPaint.setAntiAlias(true); //textPaint.setColor(Color.RED); textPaint.setColor(Color.parseColor(color)); textPaint.setTextAlign(Align.LEFT); float textwidth = textPaint.measureText(text); canvas.drawRect(point.x, point.y, point.x + 4 + textwidth, point.y + 4 + textPaint.getTextSize(), rectPaint); rectPaint.setColor(Color.WHITE); canvas.drawCircle(point.x + 2, point.y + 2, 4, rectPaint); canvas.drawText(text, point.x + 1, point.y + textPaint.getTextSize(), textPaint); } return super.draw(canvas, mapView, shadow, when); } @Override public void draw(Canvas canvas, MapView mapView, boolean shadow) { super.draw(canvas, mapView, shadow); } }