我有一些动态图块内容要显示在 map 顶部(特别是天气图像-雷达,卫星,温度等)。我正在使用适用于Android v2的Google Maps API。
我遇到的问题是,显然,更新磁贴图像的唯一方法(即,当新数据到达时,或当帧在延时动画中前进时)是调用TileOverlay.clearImageCache。不幸的是,当我这样做时,瓷砖覆盖物会闪烁片刻。这是因为clearImageCache会立即从显示中删除现有的图块图像,但是在解码和显示新的图块图像之前会有一个延迟。
我正在使用一个自定义的TileProvider来缓存切片图像,而不是每次都从服务器获取它们。但是,即使仅馈送缓存的图块(即,我的TileProvider.getTile实现也没有施加明显的延迟),过程中仍然存在足够的延迟,用户可以看到闪烁。
有人知道避免这种闪烁的方法吗?有什么方法可以对图块叠加进行双重缓冲吗?我试图用两个附加到 map 的TileOverlays对其进行双缓冲,其中之一是不可见的。但是,即使我调用clearImageCache之后,不可见的TileOverlay也不会开始从我的TileProvider获取任何图块。
最佳答案
可见性设置为false时是否可以加载即将到来的图块图像? Tile.setVisible(false);
然后,当您要更改时(加载即将出现的图块之后),将即将出现的图块设置为可见,而将当前图块设置为不可见?
CurrentTile.setVisible(false);
NewTile.setVisible(true);
这样,所有更改都发生在同一渲染帧中,并且没有延迟等待缓存的图像加载。
关于android - 如何更新TileOverlay而没有闪烁?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/14409813/