// Created by plusminus on 17:10:58 - 17.12.2008 package org.androad.osm.views.overlay; import org.osmdroid.util.GeoPoint; import org.osmdroid.views.MapView; import org.osmdroid.views.MapView.Projection; import org.osmdroid.views.overlay.Overlay; import android.content.Context; import android.graphics.Canvas; import android.graphics.Color; import android.graphics.Paint; import android.graphics.Paint.Style; import android.graphics.Point; public class OSMMapViewCrosshairOverlay extends Overlay { // =========================================================== // Constants // =========================================================== // =========================================================== // Fields // =========================================================== private final Paint mPaint; private final int mCenterCircleRadius; // =========================================================== // Constructors // =========================================================== public OSMMapViewCrosshairOverlay(final Context ctx){ this(ctx, Color.BLACK, 1, 0); } public OSMMapViewCrosshairOverlay(final Context ctx, final int aCrosshairColor, final int aCrosshairWidth, final int aCenterCircleRadius) { this(ctx, aCrosshairColor, aCrosshairWidth, aCenterCircleRadius, Style.STROKE, true); } public OSMMapViewCrosshairOverlay(final Context ctx, final int aCrosshairColor, final int aCrosshairWidth, final int aCenterCircleRadius, final Style aCenterCircleStyle, final boolean aAntialiasing) { super(ctx); this.mPaint = new Paint(); this.mPaint.setStyle(aCenterCircleStyle); this.mPaint.setAntiAlias(aAntialiasing); this.mPaint.setColor(aCrosshairColor); this.mPaint.setStrokeWidth(aCrosshairWidth); this.mCenterCircleRadius = aCenterCircleRadius; } // =========================================================== // Getter & Setter // =========================================================== public void setCrosshairColor(final int aColor){ this.mPaint.setColor(aColor); } public void setCrosshairWidth(final int aWidth){ this.mPaint.setStrokeWidth(aWidth); } // =========================================================== // Methods from SuperClass/Interfaces // =========================================================== @Override protected void draw(final Canvas canvas, final MapView osmv, final boolean shadow) { final Projection pj = osmv.getProjection(); final GeoPoint mapcenter = osmv.getMapCenter(); final Point mappointcenter = pj.toMapPixels(mapcenter, null); final int height = mappointcenter.y * 2; final int width = mappointcenter.x * 2; final int height_2 = mappointcenter.y; final int width_2 = mappointcenter.x; canvas.drawCircle(width_2, height_2, this.mCenterCircleRadius, this.mPaint); /* Draw line from left to the centercircle. */ canvas.drawLine(0, height_2, width_2 - this.mCenterCircleRadius, height_2, this.mPaint); /* Draw line from right to the centercircle. */ canvas.drawLine(width_2 + this.mCenterCircleRadius, height_2, width, height_2, this.mPaint); /* Draw line from top to the centercircle. */ canvas.drawLine(width_2, 0, width_2, height_2 - this.mCenterCircleRadius, this.mPaint); /* Draw line from bottom to the centercircle. */ canvas.drawLine(width_2, height_2 + this.mCenterCircleRadius, width_2, height, this.mPaint); } // =========================================================== // Methods // =========================================================== // =========================================================== // Inner and Anonymous Classes // =========================================================== }