gpt4 book ai didi

android - 使用计时器在 map 上放置标记

转载 作者:行者123 更新时间:2023-11-29 01:49:23 25 4
gpt4 key购买 nike

我正在使用 google maps v2 添加标记(大约 200 个)作为 map 上的路径,并且完美地放置在 map 上。但我的要求是添加每个标记有一定的时间间隔,所以我希望它看起来像一些动画。所以我尝试了两种方法,第一种方法是

latvalues[] = {....};
longvalues[]={....};
for(int i=0;i<latvalues.length;i++){
map.addMarker(new MarkerOptions().position(new LatLng(latvalues[i],longvalues[i])).title("Info")
.icon(BitmapDescriptorFactory.fromResource(R.drawable.img)));
Thread.sleep(500);
}

这不起作用,只有在放置所有标记后, map 才会加载..

第二种方法是

 latvalues[] = {....};
longvalues[]={....};
Timer marktimer = new Timer();
markTimer.scheduleAtFixedRate(new TimerTask() {

@Override
public void run() {

for(int i=0;i<latvalues.length;i++){
map.addMarker(new MarkerOptions().position(new LatLng(latvalues[i],longvalues[i])).title("Info")
.icon(BitmapDescriptorFactory.fromResource(R.drawable.img)));
}
}
},0, 500);

marktimer.cancel();

这甚至没有加载任何标记...

请提出任何解决方法来实现此...

使用倒数计时器编辑代码:

protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.datemap);

SupportMapFragment fm = (SupportMapFragment)getSupportFragmentManager().findFragmentById(R.id.busmap);
map=fm.getMap();
map.setMyLocationEnabled(true);

countdown();
}
public void countdown(){
if(this.ctimer != null){
this.ctimer.cancel();
}
this.ctimer = new CountDownTimer(1000,500) {

@Override
public void onTick(long millisUntilFinished) {
// TODO Auto-generated method stub
if(markerno<latitudeValues1.length){
map.addMarker(new MarkerOptions().position(new LatLng(latitudeValues1[markerno],longitudevalues1[markerno])).title("Info")
.icon(BitmapDescriptorFactory.fromResource(R.drawable.arrow)));
markerno++;
}
}

@Override
public void onFinish() {
// TODO Auto-generated method stub
map.moveCamera(CameraUpdateFactory.newLatLngZoom(new LatLng(latitudeValues1[markerno],longitudevalues1[markerno]), 12));
}
}.start();
}

最佳答案

private final Handler handler = new Handler();
private final Runnable worker = new Runnable() {
private int i = 0;
@Override
public void run() {
// add marker with index i
i++;
if (i < latvalues.length) {
handler.postDelayed(this, 500);
}
}
};

开始(或暂停后继续)添加 Markers:

handler.post(worker);

暂停:

handler.removeCallbacks(worker);

注意:与往常一样,您需要在代码中调用 removeCallbacks 以避免泄漏 Activity

关于android - 使用计时器在 map 上放置标记,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19223397/

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