gpt4 book ai didi

android - 对 Here SDK Map 对象执行操作是否有线程限制?

转载 作者:行者123 更新时间:2023-11-29 23:17:39 24 4
gpt4 key购买 nike

我对 HERE Android SDK 的理解是,有一个 MapView 有一个支持 Map 对象。添加对象、设置中心、缩放等应在 Map 对象上执行,这最终反射(reflect)在 MapView 上。

问题:

Are there any restrictions on what thread the operations on the Map object must be performed? For example, must they all be called on the UI thread? Also, should multiple subsequent calls be synchronized?

我问这个是因为我想在 map 中进行多项更改(调整 map View 的大小、更改一些可见图层、更改方案、添加 MapRoute 并缩小到路线的边界框)。当我尝试这个时,它有时有效但有时无效。有时,仅应用某些操作。例如,除了未应用缩放外,一切正常。

我知道有一些听众可以帮助我:

  1. Map.OnTransformListener - 我可以用它来通知我缩放操作何时结束
  2. Map.OnSchemeChangedListener - 我可以用它来了解方案更改事件何时结束

我从文档中不清楚的是,还有哪些其他操作构成“转换”?这些操作中的哪些必须以同步方式执行?

例如,以下代码是否预期会正确运行?

map.setCenter(coordinate, Animation.BOW, 18, 0f, 60f);
map.addMapObject(routeObject);
map.setVisibleLayers(layersToShow, true);
map.setScheme(Map.Scheme.NORMAL_DAY)

请注意,在上面的示例中,我在 setCenter 之后立即进行更改,甚至在动画完成之前。这是使用 API 的预期方式吗?

最佳答案

对于从哪个线程调用 API 没有限制。在内部,所有调用都是同步的并且是线程安全的。

您正在寻找的是 MapView#executeSynchronized API。 [link]这会将一些操作批量合并到一个屏幕重绘中。 [至少在我几年前写那个 API 的时候]

您遇到的情况是因为底层渲染线程开始从调用线程绘制一些命令。这导致后续调用失效。

关于android - 对 Here SDK Map 对象执行操作是否有线程限制?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55045424/

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