【问题标题】:Android draw a dot in a canvas based on gps coordinatesAndroid根据gps坐标在画布上画一个点
【发布时间】:2012-03-27 16:46:56
【问题描述】:

可以这样做吗?我不擅长画东西,有一个非常基本的“点类”,它根据 x 和 y 绘制一个圆圈,但 cavas 位于 FrameLayout 中,大小约为我在屏幕上模拟的 3,7 的一半。不用说,我在 y 上只有大约 150 个,在 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 但没有做任何事情。

【问题讨论】:

  • 不,我不仅仅是一个纯黑色背景,我在上面画点代表人物

标签: android canvas gps coordinates


【解决方案1】:

您需要想出一个将 GPS 坐标转换为画布坐标的公式。看起来这个问题很接近您的需要:Mercator longitude and latitude calculations to x and y on a cropped map (of the UK)

【讨论】:

  • 是的,这看起来就像我读完之后的内容。我要去测试一下,看看我得到了什么。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-09-08
  • 2011-07-06
  • 1970-01-01
  • 2011-10-15
  • 2013-02-24
  • 1970-01-01
相关资源
最近更新 更多