有可能这样做吗?我不擅长绘画的东西有一个非常基本的“Dot类”,它画了一个基于x和y的圆圈,但是Cavas在一个FrameLayout大小约为我模拟屏幕中的一半。毋庸置疑,我只有大约150的y和x上的200(猜测它的像素)。有没有办法缩放画布来绘制坐标?
最好将我的地点绘制在中心,我的观看“范围”中的其他位置会根据我的位置绘制。
所以我基本上都在询问是否有办法将画布缩放到坐标并允许我指定该比例。所以如果我在32.345和-212.988765这就是中心,我可以看到10公里范围内的其他位置或类似的东西。
我目前的Dot课程:
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 :(得分:0)
您需要提供一个公式,用于将GPS坐标转换为画布的坐标。看起来这个问题接近您的需求:Mercator longitude and latitude calculations to x and y on a cropped map (of the UK)