gpt4 book ai didi

Android HERE api 绘制许多 MapMarkers 很慢

转载 作者:太空狗 更新时间:2023-10-29 13:11:24 26 4
gpt4 key购买 nike

我有一个应用程序,我们需要在其中绘制各种不同车辆的路线。我们需要用标记来标记小径,以显示他们每分钟一次面对的方向。我们最终需要绘制多达 100,000 个标记。

据我所知,我们可以实际绘制所述标记的唯一方法是生成位图并将其传递给 API,但这最终会占用大量内存并且速度慢得无法使用。我已经在代码中添加了缓存,这样除非绝对需要,否则不会生成位图,但它仍然太慢了。例如,在 Nexus 5 上绘制约 10,000 个标记需要大约 30 秒。然而,绘制实际的多段线非常快(但我需要沿多段线进行标记)。 MapKit(来自 Apple)在 iPhone 5 上用不到半秒的时间绘制了相同数量的标记,大概是因为我们不必生成位图。所以..

  1. 绘制大量MapMarkers 的推荐方法是什么?
  2. 是否可以绘制 Drawable 而不是 Image
  3. 此外,是否有一种有效的方法可以从 Map 中删除所有标记?目前,我必须一个接一个地完成,这又是非常慢的(removeMapObjects 只是在循环中调用 removeMapObject)。
  4. 我应该以不同的方式解决这个问题吗?

可能值得一提的是,慢代码肯定是HERE SDK,具体是Map.addMapObjectsMap.removeMapObjects,我显然传入了MapMarker 实例。

最佳答案

如果您正在执行以下操作:

foreach(MapObject m: myObjects)
map.addMapObject(m);

那么这应该会有很大帮助:

map.executeSynchronized(new Runnable() {
public void run() {
foreach(MapObject m: myObjects)
map.addMapObject(m);
}
});

每次添加 map 对象时,它都会重新绘制 map 。使用 execute synchronized 应该批处理更新操作要快得多。此外,强烈建议您缓存任何 Image 对象并在它们相同时重新使用相同的图像。在内部,渲染器将共享相同的纹理句柄。

关于Android HERE api 绘制许多 MapMarkers 很慢,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40272100/

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