var prevOverlays = []; function undo() { for (var i = 0; i < overlays.length; i++) { overlays[i].setMap(null); } if (prevOverlays.length != 0){ overlays = []; console.log(prevOverlays); var prev_overlay = prevOverlays.pop(); for (var i = 0; i < prev_overlay.length; i++) { overlays[i] = prev_overlay[i]; overlays[i].setMap(map); } } //Deactivated at the moment if(enableSelectionFeature){ selectedShapes = []; var i = 0; var lastEntry = prevOverlays[prevOverlays.length-1][i]; console.log(prevOverlays[prevOverlays.length-1].length); for(var i = 0; i < lastEntry.length; i++){ selectedShapes.push(prevOverlays) console.log("comes here"); } } } function clonePath(path) { var clone_path = []; for (var i = 0; i < path.length; i++) { var lati = path.getAt(i).lat(); var lngi = path.getAt(i).lng(); clone_lat_lng = { lat: lati, lng: lngi }; clone_path.push(clone_lat_lng); } return clone_path; } function clonePolyline(polyline) { var path = polyline.getPath(); var geodesic = polyline.geodesic; var strokeColor = polyline.strokeColor; var strokeOpacity = polyline.strokeOpacity; var strokeWeight = polyline.strokeWeight; var clone_path = clonePath(path); //var editable = rect.editable; var clone_polyline = new google.maps.Polyline({ geodesic: geodesic, strokeColor: strokeColor, strokeOpacity: strokeOpacity, strokeWeight: strokeWeight, path: clone_path, draggable: true, editable: false }); clone_polyline.type = google.maps.drawing.OverlayType.POLYLINE; return clone_polyline; } function clonePolygon(polygon) { var path = polygon.getPath(); var geodesic = polygon.geodesic; var strokeColor = polygon.strokeColor; var strokeOpacity = polygon.strokeOpacity; var strokeWeight = polygon.strokeWeight; var fillColor = polygon.fillColor; var fillOpacity = polygon.fillOpacity; var clone_path = clonePath(path); //var editable = rect.editable; var clone_polygon = new google.maps.Polygon({ geodesic: geodesic, strokeColor: strokeColor, strokeOpacity: strokeOpacity, strokeWeight: strokeWeight, fillColor: fillColor, fillOpacity: fillOpacity, path: clone_path, draggable: true, editable: false }); clone_polygon.type = google.maps.drawing.OverlayType.POLYGON; return clone_polygon; } function cloneRectangle(rect) { var strokeColor = rect.strokeColor; var strokeOpacity = rect.strokeOpacity; var strokeWeight = rect.strokeWeight; var fillColor = rect.fillColor; var fillOpacity = rect.fillOpacity; var bounds = rect.getBounds(); //var editable = rect.editable; var clone_rect = new google.maps.Rectangle({ strokeColor: strokeColor, strokeOpacity: strokeOpacity, strokeWeight: strokeWeight, fillColor: fillColor, fillOpacity: fillOpacity, bounds: bounds, draggable: true, editable: false }); clone_rect.type = google.maps.drawing.OverlayType.RECTANGLE; return clone_rect; } function cloneCircle(circ) { var strokeColor = circ.strokeColor; var strokeOpacity = circ.strokeOpacity; var strokeWeight = circ.strokeWeight; var fillColor = circ.fillColor; var fillOpacity = circ.fillOpacity; var center = circ.center; var radius = circ.radius; //var editable = rect.editable; var clone_circ = new google.maps.Circle({ strokeColor: strokeColor, strokeOpacity: strokeOpacity, strokeWeight: strokeWeight, fillColor: fillColor, fillOpacity: fillOpacity, center: center, radius: radius, draggable: true, editable: false }); clone_circ.type = google.maps.drawing.OverlayType.CIRCLE; return clone_circ; } function cloneShape(shape) { if (shape.type === google.maps.drawing.OverlayType.POLYLINE) { var clone_polyline = clonePolyline(shape); return clone_polyline; } else if (shape.type === google.maps.drawing.OverlayType.POLYGON) { var clone_polygon = clonePolygon(shape); return clone_polygon; } else if (shape.type === google.maps.drawing.OverlayType.RECTANGLE) { var clone_rect = cloneRectangle(shape); return clone_rect; } else if (shape.type === google.maps.drawing.OverlayType.CIRCLE) { var clone_circ = cloneCircle(shape); return clone_circ; } else { console.error("Unrecognized shape: " + shape); return null; } } function overlayItemIsShape(overlay_item) { var type = overlay_item.type; is_shape = (type === google.maps.drawing.OverlayType.POLYLINE) || (type === google.maps.drawing.OverlayType.POLYGON) || (type === google.maps.drawing.OverlayType.RECTANGLE) || (type === google.maps.drawing.OverlayType.CIRCLE); return is_shape; } function historyOverlayPush() { console.log("comes here"); var overlays_copy = []; for (var i = 0; i