地图轨迹回放时如何平滑移动Marker?
我在用高德地图做轨迹回放功能,现在是每隔1秒更新一次Marker的位置,但看起来特别卡顿,像“瞬移”一样。试过用marker.setPosition()直接设置新坐标,也试过加CSS transition,但都没用。
查了文档说可以用moveAlong,但我的轨迹点是动态加载的,不是一开始就全有的。有没有办法让Marker在两个点之间平滑移动?比如用requestAnimationFrame自己算插值?
function replayTrack(points) {
let index = 0;
const timer = setInterval(() => {
if (index >= points.length) {
clearInterval(timer);
return;
}
marker.setPosition(points[index]);
index++;
}, 1000);
}
用高德自带的moveTo最省事:
如果你非要自己撸插值,用requestAnimationFrame也行,就是麻烦点:
动态加载的点也无所谓,每次拿到新点调moveTo就行,不用一开始全量加载。