我有一个功能,用户可以在Google地图上绘制多边形。多边形完成后,他可以编辑相同但不能添加新的多边形。此外,一旦用户点击任何顶点,它就会删除该节点。通常在编辑多边形或任何形状时,它会显示默认的撤消按钮。但在我的情况下,我已经禁用相同,因为我需要一个自定义的撤消和重做按钮来做同样的事情。但我不知道如何做到这一点。有人可以帮我这个吗?
我的理论: 在多边形完成时,我设置事件insert_at,set_at并单击其中我设置编辑数组,以便我可以跟踪所有编辑。 单击撤消按钮后,我将最后一个元素从编辑数组中弹出,并将其添加到重做数组,并将多边形路径设置为弹出元素的路径。为了清楚起见,下面是代码:
google.maps.event.addListener(drawingManager, 'polygoncomplete', function(polygon) {
drawingManager.setDrawingMode(null);
myArea = polygon;
myArea.setOptions({ editable: true});
google.maps.event.addListener(polygon.getPath(), 'set_at', function(ind) {
edits_arr.push(polygon);
});
google.maps.event.addListener(polygon.getPath(), 'insert_at', function(ind) {
edits_arr.push(polygon);
});
google.maps.event.addListener(polygon, 'click', function(e) {
polygon.getPath().removeAt(e.vertex);
edits_arr.push(polygon);
});
});
撤消点击:
$('#undo').click(function(){
if(edits_arr.length > 0){
var temp = edits_arr.pop();
redo_arr.push(temp);
var pathArrayTemp = temp.getPath();
myArea.setMap(null);
myArea.setPaths(pathArrayTemp);
myArea.setMap(map);
}
});
但这一切似乎都不起作用。我知道我在这里遗漏了一些东西,但无法弄清楚是什么...... :(
有人可以帮帮我吗?
答案 0 :(得分:1)
你必须克隆redo_arr的路径
在你的redo_arr中有一个对象的链接
俄语:
Тыдолженклонироватьпутьвисторию сейчасвтвоёмredo_arrкучассылокнаодинитотжеобъект