android – Overlay.draw()调用很多次

我有一个关于Android Maps中Overlay类的draw()方法的问题.

当我移动map时,方法draw()会被调用几次(从4到13).对我来说这是一个问题,因为这个方法必须用70000点重新绘制我的路线,这是很多资源.

我找不到这个问题的描述,但是当我使用任何来源的代码示例时,我遇到了同样的问题.

解决方法:

这是正常的行为.当您移动地图时,您希望它能够平滑移动并且能够在较小的移动步骤中滑动任何地图移动.

为了保持一致性,在每个小步骤移动中调用叠加上的draw()方法,因此您可以重新定位叠加项以跟随每个步骤.

您可以使用以下方法改进它:

改进1

对于每个小步骤,onDraw被调用两次.一个shadow参数等于true,一个等于false.如果你没有绘制阴影,你可以忽略其中一个调用,因此将开销减少2,使用以下作为onDraw()的第一行:

if(shadow) return;

改进2

优化您的路线方式.如果您使用的是canvas.drawLine(),则可以使用canvas.drawPath()来定义它.您只需为路径创建一个路径(对于特定的缩放级别),并且移动地图时您只需偏移路径,而无需重新调整路径.

改进3

您甚至可以进一步优化路径,只添加距前一个像素的距离大于特定值(即2个像素)的点,从而减少路径中的点总数,而不会有任何明显的质量损失.

我正在使用上面几千点(aprox 20.000)路线的方法,并且路线在中程设备中平稳移动.

如果您需要以上任何一点,请告知我们.

祝好运.

上一篇:Android:在叠加图像背景中设置填充


下一篇:java – 绘制其他不适用于Android 8.0的应用程序