【发布时间】:2011-09-29 05:19:37
【问题描述】:
我必须在谷歌地图上画大约 10000 条线。所以,它在draw() 方法上花费了太多时间。在地图上移动变得非常滞后。有没有办法缓存绘图或者我可以只绘制当前在屏幕上看到的地图/画布的一部分?
【问题讨论】:
标签: android google-maps
我必须在谷歌地图上画大约 10000 条线。所以,它在draw() 方法上花费了太多时间。在地图上移动变得非常滞后。有没有办法缓存绘图或者我可以只绘制当前在屏幕上看到的地图/画布的一部分?
【问题讨论】:
标签: android google-maps
绘制 10000 条线永远不会没有延迟。我猜你连接点。
Here 是 mapView 中点聚类的一种实现,如果需要,还可以渲染可见的。所以你可以画线到聚集的点。
【讨论】:
现在我可以毫无延迟地绘制所有 10000 条线。这一切都是关于仔细设计draw() 方法。我将一些对象创建操作(如路径、点)移出 draw()。我看到特别是projection.toPixels(geoPoint, point); 是非常昂贵的操作。最后,我设置了一个 alpha 常量,它保存手指移动的像素值。并且它仅在pixelX 或pixelY 移动大于alpha 时才绘制。
【讨论】:
看看这篇文章,它建议把你的线条画成一个形状,然后把它画到地图视图上。
这里:Cache whats being draw on MapView in Android
这只是一个建议,您可能想尝试将 MapView 保存为位图,然后进行渲染(取决于您的情况)。
【讨论】: