gpt4 book ai didi

android - 如何将图 block 添加到谷歌地图并对其进行动画处理,即连续用新图 block 替换它们

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:44:37 25 4
gpt4 key购买 nike

我正在从缓存中向 Google map 添加多个 TileOverlay。当尝试使用处理程序通过更改它们的可见性来为它们设置动画时,在第一次播放期间 map 上的叠加层会闪烁。

还有其他方法可以实现吗?

enter image description here

public class LocalTileProvider implements TileProvider {
private String url;
DatabaseHelper db;
String type;
// private Paint opacityPaint = new Paint();
String newurl= PathFinder.rainradar_HDBaseurl;
String uid;

public LocalTileProvider(String uid,DatabaseHelper cache,String type){
this.uid=uid;
this.db=cache;
this.type=type;
}

//taking the tile from SQLITEDATABASE
@Override
public Tile getTile(int x, int y, int zoom){
Tile tile = null;
if(db.ispresent(uid, zoom,x , y,type)){
byte[] b=db.gettiles(uid, zoom,x , y,type);
tile = new Tile(256, 256, b);
return tile;
}
return NO_TILE;
}
}

以下是将这些图 block 添加到 Google map 的代码

LocalTileProvider provider1 = new LocalTileProvider(uidList.get(0), db, TAG);
TileOverlayOptions top1 = new TileOverlayOptions().tileProvider(provider1).visible(true);
tileoverlay_1 = googleMap.addTileOverlay(top1);

添加它们后,我通过切换图 block 的可见性来使用处理程序播放动画

public void start() {
btn_play.setEnabled(true);
tileoverlay_default.setVisible(false);
runnable_animation = new Runnable() {
@Override
public void run() {
//tileoverlay_default.setVisible(false);
isDownloading = false;
// stop_download=true;
isRunning = true;
btn_play.setBackgroundResource(R.drawable.player_pause_2x);
setVisibility(global);

if (global == 11) {
global = 0;
} else {
global = global + 1;
}
mHandler_animation.postDelayed(this, 1000);
}
};
mHandler_animation.post(runnable_animation);
}

最佳答案

我知道这是一个非常古老的问题,但如果有人正在寻找这个问题的答案,我想我可能会发布我的答案。

将 TileOverlay 添加到 map 时,TileOverlay 闪烁的原因有 2 个。

  1. 图 block 未缓存,必须加载
  2. 图 block 淡入(默认行为)

从代码的外观来看,您正在缓存图 block ,因此要阻止它们闪烁,您需要做的就是关闭淡入行为:

LocalTileProvider provider1 = new LocalTileProvider(uidList.get(0), db, TAG);
TileOverlayOptions top1 = new TileOverlayOptions().tileProvider(provider1).visible(true);
TileOverlay newTileOverlay = map.addTileOverlay(overlay);
tileoverlay_1 = googleMap.addTileOverlay(top1);
tileoverlay_1.setFadeIn(false); //Stop cached tiles from flickering in

关于android - 如何将图 block 添加到谷歌地图并对其进行动画处理,即连续用新图 block 替换它们,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36748804/

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