2012-03-10 61 views
2

可以做到这一点吗?我不擅长绘画,有一个非常基本的“Dot类”,它绘制了一个基于x和y的圆,但是cavas在FrameLayout中,大小约为我模拟屏幕3,7的一半。不用说,我只在y上获得了大约150,在x上获得了大约200(猜测它的像素)。有没有办法缩放画布以绘制坐标?Android根据gps坐标在画布上绘制点

最好是我的位置在中心绘制,我的查看中的其他位置“范围”根据我的位置绘制。

所以即时通讯基本上问是否有一种方法来缩放画布到坐标,并允许我指定该比例。所以如果我在32.345和-212.988765这是中心,我可以看到其他位置说10公里范围或类似的东西。

我目前的点类:

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的坐标报告工作和绘画工作,但只有当画布的范围内,它的现在。

为了说清楚,我的应用程序中的所有内容都正常工作,正确的坐标正在传递,我需要的最后一部分是一个可视化表示,我不知道如何让画布像地图一样工作。

编辑我的另一个问题是图纸,当位置更新它肯定会重绘,但它附加了一个新的圆圈,而旧的圆圈仍然存在。我如何完全刷新它,以便圆圈“移动”而不是附加一个新的?我试图在视图上调用invalidate,但没有做任何事情。

+0

你使用的是MapView吗? – 2012-03-10 15:33:40

+0

不,我不只是一个简单的黑色背景,在这个背景上我画了代表人的点 – nejs 2012-03-10 16:33:42

回答