我正在尝试使用MapBoxGL为摄影机旋转设置动画,同时提供选项以暂停旋转并使用复选框回调重新启动旋转。 “暂停” /“停止”旋转效果很好,但是“重新启动”似乎可以选择从不停顿的动画开始播放,而不是从停止动画的位置开始播放。
var animation;
function rotateCamera(timestamp) {
map.rotateTo((timestamp / 600) % 360, {duration: 0});
animation = requestAnimationFrame(rotateCamera);
}
在加载地图时,将通过以下方式调用动画:
animation = rotateCamera(0);
回调看起来像这样:
d3.selectAll("input[name='camerarotation-selection']").on("change", function() {
if (d3.select("input[name='selection']").property("checked")) {
rotateCamera(map.getBearing());
} else {
cancelAnimationFrame(animation);
}
});
如果我console.log
函数中的时间戳变量rotateCamera
,我可以看到尽管有cancelAnimationFrame
调用,但它仍在递增。我尝试过声明animation
在重新启动时未定义,这似乎也不起作用。我很沮丧!感谢您的帮助。