1

我必须在地图上画一条线。由于需要特殊的线条效果,我不得不创建一个单独的位图并在该位图上绘制线条,使用临时画布。现在当它完成画线时,我将它渲染到主画布上。不幸的是,下面的代码对我不起作用。

  @Override
    protected void draw(final Canvas canvas, final MapView mapView, final boolean shadow) {
    Bitmap pathBitmap = Bitmap.createBitmap(canvas.getWidth(), canvas.getHeight(), Config.ARGB_4444);
    Canvas tempCanvas = new Canvas(pathBitmap);
    tempCanvas.drawPath(mPath, this.mPaint);
    canvas.drawBitmap(pathBitmap, 0, 0, null);
    }

谁能告诉我我在这里做错了什么?

更新:看看我做错了什么。我创建了一个新类并用 Drawable 对其进行了扩展。在那个类中,我重写了 Draw 方法,并使用了相同的代码,只有参数 Canvas,并且它起作用了。但不知道为什么它在 MapView 上不起作用。有人请帮我吗?

4

2 回答 2

1

在创建位图时,您应该使用视图getWidget()而不是使用画布的大小。getHeight()

于 2013-08-23T05:41:23.237 回答
0

我在类似的问题上苦苦挣扎。最终我查看了控制台窗口,发现了这个警告:

“OpenGLRenderer:位图太大而无法上传到纹理中”。那会是你的问题吗?请参阅“位图太大而无法上传到纹理中”

于 2018-04-19T06:51:02.053 回答