Java 想在谷歌地图中每10秒设置一次标记动画吗?

Java 想在谷歌地图中每10秒设置一次标记动画吗?,java,android,google-maps-android-api-2,Java,Android,Google Maps Android Api 2,我必须在我的一个应用程序中实现Google map v2。现在我想设置一个标记,每10秒时间间隔连续设置一次动画,并且始终显示信息窗口。我已经动画标记时,用户点击它。但我希望每10秒自动为标记设置动画 以下代码: static final LatLng SECC = new LatLng(55.8607, -4.2871); private Marker mPerth; mPerth = mMap .addMarker(n

我必须在我的一个应用程序中实现Google map v2。现在我想设置一个标记,每10秒时间间隔连续设置一次动画,并且始终显示信息窗口。我已经动画标记时,用户点击它。但我希望每10秒自动为标记设置动画

以下代码:

    static final LatLng SECC = new LatLng(55.8607, -4.2871);
    private Marker mPerth;

            mPerth = mMap
                .addMarker(new MarkerOptions()
                        .position(SECC)
                        .title("SECC")
                        .snippet(
                                "Exhibition Way, Glasgow, G3 8YW\nSports: Boxing, Gymnastics, Judo, Netball, Wrestling, Weightlifting"));


   @Override
public boolean onMarkerClick(final Marker marker) {
    if (marker.equals(mPerth)) {
        // This causes the marker at Perth to bounce into position when it
        // is clicked.
        final Handler handler = new Handler();
        final long start = SystemClock.uptimeMillis();
        final long duration = 1500;

        final Interpolator interpolator = new BounceInterpolator();

        handler.post(new Runnable() {
            @Override
            public void run() {
                long elapsed = SystemClock.uptimeMillis() - start;
                float t = Math.max(
                        1 - interpolator.getInterpolation((float) elapsed
                                / duration), 0);
                mPerth.setAnchor(0.5f, 1.0f + 2 * t);
                if (t > 0.0) {
                    // Post again 16ms later.
                    handler.postDelayed(this, 16);
                }
            }
        });
    } else if (marker.equals(mAdelaide)) {
        // This causes the marker at Adelaide to change color.
        marker.setIcon(BitmapDescriptorFactory.defaultMarker(new Random()
                .nextFloat() * 360));
    }
    return false;
}

按照我的方式尝试:在
活动中创建
CustomTimerTask

    class CustomTimerTask extends TimerTask {
    private Context context;
    private Handler mHandler = new Handler();

    // Write Custom Constructor to pass Context
    public CustomTimerTask(Context con) {
        this.context = con;
    }

    @Override
    public void run() {
        new Thread(new Runnable() {
            @Override
            public void run() {
                mHandler.post(new Runnable() {
                    @Override
                    public void run() {
                        final Handler handler = new Handler();
                        final long start = SystemClock.uptimeMillis();
                        final long duration = 3000;

                        final Interpolator interpolator = new BounceInterpolator();

                        handler.post(new Runnable() {
                            @Override
                            public void run() {
                                long elapsed = SystemClock.uptimeMillis() - start;
                                float t = Math.max(
                                        1 - interpolator.getInterpolation((float) elapsed
                                                / duration), 0);
                                mPerth.setAnchor(0.5f, 0.1f+1*t);

                                if (t > 0.0) {
                                    // Post again 16ms later.
                                    handler.postDelayed(this, 16);
                                }
                            }
                        });
                    }
                });
            }
        }).start();

    }

}
然后设置
标记
,如下所示:

    mPerth = mMap
        .addMarker(new MarkerOptions()
        .position(SECC)
        .title("SECC")
        .snippet("Exhibition Way, Glasgow, G3 8YW\nSports: Boxing, Gymnastics, Judo, Netball, Wrestling, Weightlifting"));

        Timer timer = new Timer();
        TimerTask updateProfile = new CustomTimerTask(youractivity.this); 
        timer.scheduleAtFixedRate(updateProfile, 10,5000);
        mPerth.showInfoWindow();
        mMap.animateCamera(CameraUpdateFactory.newLatLngZoom(SECC, 18.0f));

试试这个,让我知道。

@user\u New请接受简单计划给出的答案,它将对其他人有所帮助@简单计划:请查看此链接