【发布时间】:2018-08-17 04:18:40
【问题描述】:
我已经问过以下有关 stacoverflow 之类的日本服务的问题,但没有人回答。 所以,让我在这里问。请原谅我的英语不好。
我正在使用适用于 Android 版本和 2 层的 Google Maps API 的 Tile Overlay。 然后我想改变图层。 用英语解释对我来说太难了...所以请阅读我写的代码。
public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
if(mTileOverlay != null && seekBar.getProgress() > 50) {
mTileOverlay.remove();
setupOverlayLayersA(_mMap); //set Layer A
mTileOverlay.setTransparency(1.0f - ((float) progress - 50f) / 50f);
}else if (seekBar.getProgress() == 50) {
mTileOverlay.setTransparency(1.0f);
}else if(seekBar.getProgress() < 50){
mTileOverlay.remove();
setupOverlayLayersB(_mMap); //set Layer B
mTileOverlay.setTransparency((float) progress / (float) 50);
}
}
这个问题是在寻找进度改变时重复“删除”和“设置层”。我想做的是在寻求进度超过 50 或小于 50 时只更改一次图层并启用透明度 我应该如何修复代码?
*我想做的就是这样……
搜索栏
B-----------50--------------A
|---------------------------------|
透明度
B-----------50--------------A
0.0f----------1.0f------------0.0f
【问题讨论】:
-
实际发生了什么问题?同样在你的代码中,考虑如果
mTileOverlay == null && seekBar.getProgress() == 50- NPE でしょう会发生什么。 -
问题是重复删除层并在进度改变时设置新层,即使使用相同的层。这意味着当进度为51时,当前层(在本例中为A)被移除并设置新层A并更改52,当前层A被移除并设置新层A。
-
什么不起作用?你有没有放入调试语句来检查它是否被调用?
-
不,它实际上正在工作,但这很糟糕,因为每当进度更改时都会重复“删除”和“设置”。我想在搜索栏位于 51 或 49 时设置一个层。51 是 A 层,49 是 B 层。
-
所以你只想在超过某个阈值时删除一次?可能会引入一个
boolean变量,表明它已经被删除了。
标签: java android google-maps tile