在Android Studio中每10秒显示一次位置



我正在做一个应用程序,其中每10秒钟,位置出现在地图上的另一个位置,不好的事情是它对我不起作用,当我运行程序时我看到所有位置已经到位。但是我希望每10秒钟一次,将一个一个一个一个逐一放置,就好像它们在移动一样。这是我的代码:

    @Override
    public void onMapReady(GoogleMap googleMap) {
    mMap = googleMap;
    for ( contador=1;contador<=10;contador++) {
            final long EXECUTION_TIME = 10000;
            handler.postDelayed(new Runnable() {
            @Override
            public void run() {
               handler.postDelayed(this, EXECUTION_TIME);
            }
        }, EXECUTION_TIME);
        mMap.addMarker(new MarkerOptions().position(obtenerLatLong(contador)).title("Mi Hogar").snippet("Municipio").icon(BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_CYAN)));
        mMap.moveCamera(CameraUpdateFactory.newLatLngZoom(obtenerLatLong(contador), 17));
    }
}

有什么方法?

您的处理程序除了启动其他处理程序外什么都不做,您必须在run()内部和run()末尾启动下一个postDelayedaddMarkermoveCamera调用。您可以使用int计数并查看循环中的位置并仅在此INT不到10的情况下启动另一个处理程序。(在这里我使用cpt来执行此操作(

final long EXECUTION_TIME = 10000;
final Handler handler = new Handler();
handler.postDelayed(new Runnable() {
    int cpt = 1;
    @Override
    public void run() {
        /* old
        * mMap.addMarker(new MarkerOptions().position(obtenerLatLong(contador)).title("Mi Hogar").snippet("Municipio").icon(BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_CYAN)));
        * mMap.moveCamera(CameraUpdateFactory.newLatLngZoom(obtenerLatLong(contador), 17));
        */
        //new
        mMap.addMarker(new MarkerOptions().position(obtenerLatLong(cpt)).title("Mi Hogar").snippet("Municipio").icon(BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_CYAN)));
        mMap.moveCamera(CameraUpdateFactory.newLatLngZoom(obtenerLatLong(cpt), 17));
        cpt++;
        if(cpt <= 10)
            handler.postDelayed(this, EXECUTION_TIME);
    }
}, EXECUTION_TIME);

这将有效尝试:

final long EXECUTION_TIME = 10000;
final Handler handler = new Handler();
handler.postDelayed(new Runnable() {
int i=0;
  @Override
  public void run() {
    i=i+1;
    mMap.addMarker(new MarkerOptions().position(obtenerLatLong(contador)).title("Mi Hogar").snippet("Municipio").icon(BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_CYAN)));
    mMap.moveCamera(CameraUpdateFactory.newLatLngZoom(obtenerLatLong(contador), 17));
    if(i==10){
       handler.removeCallbacks(this);
    }
 }
}, EXECUTION_TIME);

最新更新