经过长时间搜索如何使标记闪烁后,我使用谷歌地图v2在我的项目中想出了这段代码。这是代码..
MyMarker = map.addMarker(new MarkerOptions().position(current_loc).title(address).snippet(city).
icon(BitmapDescriptorFactory.fromResource(R.drawable.bus4)));
markertimer = new Timer();
markertimer.scheduleAtFixedRate(new TimerTask() {
@Override
public void run() {
// TODO Auto-generated method stub
runOnUiThread(new Runnable() {
@Override
public void run() {
// TODO Auto-generated method stub
blinkMarker();
}
});
}
}, 0, 500);
这里是blinkMarker方法..
private boolean blinkMarker(){
if(marker == true){
current.setVisible(true);
marker = false;
}
else if(marker == false){
current.setVisible(false);
marker = true;
}
return marker;
}
所以上面的工作正常并且标记闪烁,但我怀疑是
答案 0 :(得分:1)
尝试将setVisible
替换为setIcon
。这样做时,您需要为与bus4.png
大小相同的图标准备另一个drawable,但所有像素都是透明的。
注意与setIcon
相关的导致信息窗口消失的there is a bug。
请注意代码中的几个问题:
Timer
是浪费的。它使用您不需要的Thread
。请考虑使用Handler
代替。Timer
被销毁后,Activity
不会停止工作。如果你不这样做,你需要cancel
它。如果切换为Handler
,请重置以删除您发送的所有Runnable
或Message
。答案 1 :(得分:0)
Google地图通常比较繁忙:有很多标记。因此,您可以将Scheduledthreadpoolexecutor与runnable一起使用。
你的blinkMarket方法可能更短,如下所示: '(!标记)current.setVisible&#39 ;.我担心使用Timer是不正确的方法。你可以使用带有postDelayed的Handler来做同样的事情。如果标记的闪烁取决于某些条件,则应重复检查,而不应生成两次闪烁任务。