Javascript Google map api v3:为已编辑多边形添加自定义撤消/重做功能

Javascript Google map api v3:为已编辑多边形添加自定义撤消/重做功能,javascript,jquery,google-maps-api-3,Javascript,Jquery,Google Maps Api 3,我有一个功能,用户可以在谷歌地图上画一个多边形。多边形完成后,他可以编辑相同的多边形,但不能添加新多边形。此外,一旦用户单击任何顶点,它将删除该节点。通常在编辑多边形或任何形状时,会显示默认的“撤消”按钮。但在我的情况下,我已经禁用了相同的功能,因为我需要一个自定义的撤消和重做按钮来执行相同的操作。但我不确定我怎么能做到这一点。有人能帮我吗 我的理论是: 在多边形完成时,我将事件设置为insert_at,set_at,然后单击设置编辑数组的位置,以便跟踪所有编辑。 单击“撤消”按钮后,我将最后一

我有一个功能,用户可以在谷歌地图上画一个多边形。多边形完成后,他可以编辑相同的多边形,但不能添加新多边形。此外,一旦用户单击任何顶点,它将删除该节点。通常在编辑多边形或任何形状时,会显示默认的“撤消”按钮。但在我的情况下,我已经禁用了相同的功能,因为我需要一个自定义的撤消和重做按钮来执行相同的操作。但我不确定我怎么能做到这一点。有人能帮我吗

我的理论是: 在多边形完成时,我将事件设置为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);

    }   
});
但这一切似乎都不起作用。我知道我在这里遗漏了一些东西,但我想不出是什么(


有人能帮我吗?

您必须克隆重做的路径

在您的重做中,为一个对象添加多个链接


俄语:

ыжжжааааааааа 重做