Плавная анимация маркера вдоль полилинии - PullRequest
0 голосов
/ 08 декабря 2018

У меня есть полилиния, маркер и пункт назначения.Полилинии идут в направлении точки назначения.

Я знал, что полилиния является коллекцией LatLng (точка), поэтому разрыв между точкой внутри коллекции случайным образом генерируется gii направлением 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);
                }
            }
        });
    }
...