我正在尝试为使用传单和传单路由机的工具实现简单的撤消/重做功能。这是我的功能:
var activityBuffer = [];
var undoFlag = false;
Routing.on('routeselected', function(){
if (undoFlag) {
undoFlag = false;
}
else {
var newWaypoints = Routing.getWaypoints();
activityBuffer.push(newWaypoints);
console.log(activityBuffer);
}
});
function undoActivity(){
var lastStateIndex = activityBuffer.length - 2
if (lastStateIndex >= 0) {
var oldState = activityBuffer[lastStateIndex];
Routing.setWaypoints(oldState);
activityBuffer.splice( activityBuffer.length - 1, 1);
undoFlag = true;
console.log(activityBuffer);
}
}
如果我只添加更多点并触发 routeselected 事件,它工作正常,但问题是当我移动我的航点并且相同点的坐标发生更改时,该航点的 activityBuffer 中的条目也会自行更新,添加另一个一系列新的航点也被推送。为什么这样?
我希望我解释了我的问题。寻求帮助!