gpt4 book ai didi

android - Overlay.draw() 多次调用

转载 作者:太空宇宙 更新时间:2023-11-03 12:38:27 40 4
gpt4 key购买 nike

我对 Android map 中 Overlay 类的 draw() 方法有疑问。

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

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

最佳答案

这是正常行为。当您移动 map 时,您希望它移动平稳并实现任何 map 移动都以更小的移动步骤进行。

为了一致性,覆盖层上的 draw() 方法会为每个小步移动调用,因此您可以重新定位覆盖层项目以遵循每个操作系统的步骤。

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

改进 1

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

if(shadow) return;

改进 2

优化您绘制路线的方式。如果您正在使用 canvas.drawLine(),您可以使用 canvas.drawPath() 对其进行绝对改进。您只需使用路线创建一次路径(对于特定的缩放级别),本地图移动时,您只需偏移路径,无需重新创建。

改进 3

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

我在几千点(约 20.000)的路线上使用上述方法,并且路线在中等范围的设备中平稳移动。

如果您需要以上任何一点的更多详细信息,请告诉我。

祝你好运。

关于android - Overlay.draw() 多次调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12931564/

40 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com