【问题标题】:Redraw only being called on ClusterItems that have received position updates仅在收到位置更新的 ClusterItems 上调用重绘
【发布时间】:2016-03-12 00:28:13
【问题描述】:

Google Maps API 似乎在后台做了一些魔法,阻止 ClusterItems 被更新,除非他们收到了位置更新。

不幸的是,这意味着如果我想在不同的缩放级别更改标记的外观,在标记接收到新的位置数据之前不会刷新外观。

有没有办法解决这个问题?

我目前正在以这种方式刷新地图:

HashSet<customClusterItem> limitedDisplaySet = new HashSet<>();
mClusterManager.clearItems();

//...build limitedDisplaySet

mClusterManager.addItems(limitedDisplaySet);
mClusterManager.cluster();

【问题讨论】:

标签: android google-maps


【解决方案1】:

我最终解决了这个问题,为我的ClusterItem 创建了一个复制构造函数,并在我需要在去集群事件之外对其执行重绘时复制我的ClusterItems 列表。

之所以有效,是因为默认的ClusterRenderer 保留了它已经绘制的所有标记的缓存。当我们复制一个ClusterItem时,它被认为是ClusterRenderer的缓存中的一个新对象,这意味着渲染器需要绘制一个新的Marker来表示该对象。这模拟了原始 Marker 的“重绘”。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-03
    • 2023-03-21
    • 2015-12-21
    相关资源
    最近更新 更多