Я пытаюсь контролировать скорость анимации, чтобы она соответствовала фактической скорости, которую развило транспортное средство.
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 секунд?