沿折线平滑标记动画

时间:2018-12-08 14:54:54

标签: java android google-maps google-maps-api-3 google-maps-markers

我有折线,标记和终点。折线朝目标点的方向前进。

我知道多段线是LatLng(点)的集合,因此集合中点之间的间隙是由Google Directions api随机生成的。

问题是,当我对标记进行动画处理时,标记会快速一点一点地移动通过点,而在点之间会有延迟。

我想知道的是如何使集合内的点彼此更加接近,从而使动画更加平滑,或者是否存在另一种使动画更平滑的方法以及如何计算该动画的持续时间。

这就是我使标记移动的方法。

public static void animateMarker(final GoogleMap myMap, final Marker marker, final List<LatLng> directionPoint, final boolean showMarker) {
        final Handler handler = new Handler();
        final long start = SystemClock.uptimeMillis();
        final long duration = 3000;


        final Interpolator interpolator = new AccelerateDecelerateInterpolator();
        handler.post(new Runnable() {
            int i = 0;
            float t,v;
            long elapsed;

            @Override
            public void run() {
                elapsed = SystemClock.uptimeMillis() - start;
                t = elapsed / duration;
                v = interpolator.getInterpolation(t);

                if (i < directionPoint.size()){
                    marker.setPosition(directionPoint.get(i));
                    i++;
                }
                if (t < 1) {
                    // Post again 16ms later.
                    handler.postDelayed(this, 16);
                }
            }
        });
    }

0 个答案:

没有答案