2012-03-10 10 views
2

これは可能ですか?私は絵を描くのにうまくいきませんでした。xとyに基づいて円を描く非常に基本的な "Dotクラス"が得られました。しかし、キャバスはFrameLayoutにあります。言うまでもなく、iveはyについては約150しか得ていないし、x上の200(ピクセルを推測する)のようなものもある。座標をペイントするためにキャンバスをスケールする方法はありますか?AndroidはGPS座標に基づいてキャンバスに点を描画します

私のロケーションは中央に描画され、私の表示範囲内の他の場所は自分の位置に基づいてペイントされます。

私は基本的に、キャンバスを座標に合わせて縮尺を決めてスケールを指定できる方法があるかどうかを尋ねています。もし32.345と-212.988765のImが中心であれば、私は10kmの範囲のような他の場所を見ることができます。

私の現在のドットクラス:

public class Dot extends View{ 
    private final float x; 
    private final float y; 
    private final int r = 5; 
    private final Paint mPaint = new Paint(Paint.ANTI_ALIAS_FLAG); 

    public Dot(Context context, float x, float y) { 
     super(context); 
     mPaint.setColor(0xFFFF0000); 
     this.x = x; 
     this.y = y; 
    } 

    @Override 
    protected void onDraw(Canvas canvas) { 
     super.onDraw(canvas); 

     canvas.drawCircle(x, y, r, mPaint); 
    } 


} 

GPSの報告が働いていると絵が今取り組んでしかそのキャンバスの範囲内であればされる座標。

私のアプリのすべてが機能しており、正しい座標が渡されています。必要な最後の部分は視覚的な表現で、キャンバスをマップのように動かす方法はわかりません。

編集中のもう1つの問題は、位置が更新されると描画が確実に再描画されますが、古い円を残して新しい円が追加されます。新しいものを追加するのではなく、サークルが移動するように完全に更新するにはどうすればよいですか?私はビューの無効を呼び出してみましたが、それは何もしませんでした。

+0

MapViewを使用していますか? –

+0

いいえ私は人々を代表する点を塗りつぶす白い黒い背景ではありません – nejs

答えて

関連する問題