Управление скоростью анимации при анимации точки через линию - PullRequest
0 голосов
/ 03 февраля 2019

Я пытаюсь контролировать скорость анимации, чтобы она соответствовала фактической скорости, которую развило транспортное средство.

let counter = 0;
const animate = () => {
    counter += 1;

    // Update point geometry to a new position based on the animation
    // And the distance the point has travelled along the route.

    const updatedPoint = turf.along(lineString, (counter / 100) * lineDistance, 'kilometers');
    moveVehicleToPoint(updatedPoint);

    // updatedPoint represents a point between/along between origin and destination

    if (updatedPoint.geometry.coordinates[0] !== destination) {
        requestAnimationFrame(animate);
    }
}

animate();

Я почти на месте, но математика не является моим самым сильным активом.

lineDistance составляет примерно 0,01-0,02 км в среднем.
lineString содержит начальную и конечную координаты.
turf.along принимает lineString, установленное расстояние, и возвращает расстояние отначните с указанного вами расстояния вдоль линии в километрах.

В настоящее время я включил произвольное значение 100, на которое нужно разделить.Если движение машины заняло 1 секунду, это довольно хорошо.Он будет двигаться к следующей точке примерно на секунду.

Если это заняло 2 секунды, он будет слишком медленным и закончит движение задолго до того, как это сделает транспортное средство.

Как можноЯ включил мою переменную durationSeconds, так что если я скажу, что это заняло 2 секунды, animate() будет отлично анимироваться вдоль линии в течение 2 секунд?

1 Ответ

0 голосов
/ 03 февраля 2019

Попробуйте установить переменную во внешней области видимости, которая относится к необходимой вам скорости.Измените его значение соответственно, чтобы контролировать его.

...