source: gs3-extensions/map-editor/DrawingManager/checkpt24/historyManager.js@ 32722

Last change on this file since 32722 was 32722, checked in by ak19, 5 years ago

Redo and undo working

File size: 5.7 KB
Line 
1var prevOverlays = [];
2
3function undo() {
4
5 for (var i = 0; i < overlays.length; i++) {
6 overlays[i].setMap(null);
7
8 }
9 if (prevOverlays.length != 0){
10 overlays = [];
11 console.log(prevOverlays);
12 var prev_overlay = prevOverlays.pop();
13
14 for (var i = 0; i < prev_overlay.length; i++) {
15 overlays[i] = prev_overlay[i];
16 overlays[i].setMap(map);
17 }
18
19 }
20
21 //Deactivated at the moment
22 if(enableSelectionFeature){
23 selectedShapes = [];
24 var i = 0;
25 var lastEntry = prevOverlays[prevOverlays.length-1][i];
26 console.log(prevOverlays[prevOverlays.length-1].length);
27
28 for(var i = 0; i < lastEntry.length; i++){
29 selectedShapes.push(prevOverlays)
30 console.log("comes here");
31 }
32
33 }
34
35
36}
37
38function clonePath(path)
39{
40 var clone_path = [];
41
42 for (var i = 0; i < path.length; i++) {
43 var lati = path.getAt(i).lat();
44 var lngi = path.getAt(i).lng();
45 clone_lat_lng = {
46 lat: lati,
47 lng: lngi
48 };
49 clone_path.push(clone_lat_lng);
50 }
51
52 return clone_path;
53}
54
55function clonePolyline(polyline)
56{
57 var path = polyline.getPath();
58 var geodesic = polyline.geodesic;
59 var strokeColor = polyline.strokeColor;
60 var strokeOpacity = polyline.strokeOpacity;
61 var strokeWeight = polyline.strokeWeight;
62 var clone_path = clonePath(path);
63 //var editable = rect.editable;
64
65 var clone_polyline = new google.maps.Polyline({
66 geodesic: geodesic,
67 strokeColor: strokeColor,
68 strokeOpacity: strokeOpacity,
69 strokeWeight: strokeWeight,
70 path: clone_path,
71 draggable: true,
72 editable: false
73 });
74
75 clone_polyline.type = google.maps.drawing.OverlayType.POLYLINE;
76
77 return clone_polyline;
78}
79
80function clonePolygon(polygon)
81{
82 var path = polygon.getPath();
83 var geodesic = polygon.geodesic;
84 var strokeColor = polygon.strokeColor;
85 var strokeOpacity = polygon.strokeOpacity;
86 var strokeWeight = polygon.strokeWeight;
87 var fillColor = polygon.fillColor;
88 var fillOpacity = polygon.fillOpacity;
89 var clone_path = clonePath(path);
90 //var editable = rect.editable;
91
92 var clone_polygon = new google.maps.Polygon({
93 geodesic: geodesic,
94 strokeColor: strokeColor,
95 strokeOpacity: strokeOpacity,
96 strokeWeight: strokeWeight,
97 fillColor: fillColor,
98 fillOpacity: fillOpacity,
99 path: clone_path,
100 draggable: true,
101 editable: false
102 });
103
104 clone_polygon.type = google.maps.drawing.OverlayType.POLYGON;
105
106 return clone_polygon;
107}
108
109function cloneRectangle(rect)
110{
111 var strokeColor = rect.strokeColor;
112 var strokeOpacity = rect.strokeOpacity;
113 var strokeWeight = rect.strokeWeight;
114 var fillColor = rect.fillColor;
115 var fillOpacity = rect.fillOpacity;
116 var bounds = rect.getBounds();
117 //var editable = rect.editable;
118
119 var clone_rect = new google.maps.Rectangle({
120 strokeColor: strokeColor,
121 strokeOpacity: strokeOpacity,
122 strokeWeight: strokeWeight,
123 fillColor: fillColor,
124 fillOpacity: fillOpacity,
125 bounds: bounds,
126 draggable: true,
127 editable: false
128 });
129
130 clone_rect.type = google.maps.drawing.OverlayType.RECTANGLE;
131
132 return clone_rect;
133}
134
135function cloneCircle(circ)
136{
137 var strokeColor = circ.strokeColor;
138 var strokeOpacity = circ.strokeOpacity;
139 var strokeWeight = circ.strokeWeight;
140 var fillColor = circ.fillColor;
141 var fillOpacity = circ.fillOpacity;
142 var center = circ.center;
143 var radius = circ.radius;
144 //var editable = rect.editable;
145
146 var clone_circ = new google.maps.Circle({
147 strokeColor: strokeColor,
148 strokeOpacity: strokeOpacity,
149 strokeWeight: strokeWeight,
150 fillColor: fillColor,
151 fillOpacity: fillOpacity,
152 center: center,
153 radius: radius,
154 draggable: true,
155 editable: false
156 });
157
158 clone_circ.type = google.maps.drawing.OverlayType.CIRCLE;
159
160 return clone_circ;
161}
162
163
164function cloneShape(shape)
165{
166 if (shape.type === google.maps.drawing.OverlayType.POLYLINE) {
167 var clone_polyline = clonePolyline(shape);
168 return clone_polyline;
169 }
170 else if (shape.type === google.maps.drawing.OverlayType.POLYGON) {
171 var clone_polygon = clonePolygon(shape);
172 return clone_polygon;
173 }
174 else if (shape.type === google.maps.drawing.OverlayType.RECTANGLE) {
175 var clone_rect = cloneRectangle(shape);
176 return clone_rect;
177
178 }
179 else if (shape.type === google.maps.drawing.OverlayType.CIRCLE) {
180 var clone_circ = cloneCircle(shape);
181 return clone_circ;
182
183 }
184 else {
185 console.error("Unrecognized shape: " + shape);
186 return null;
187 }
188 console.log(cloneShape);
189}
190
191function overlayItemIsShape(overlay_item)
192{
193 var type = overlay_item.type;
194
195 is_shape = (type === google.maps.drawing.OverlayType.POLYLINE)
196 || (type === google.maps.drawing.OverlayType.POLYGON)
197 || (type === google.maps.drawing.OverlayType.RECTANGLE)
198 || (type === google.maps.drawing.OverlayType.CIRCLE);
199
200 return is_shape;
201}
202
203function historyOverlayPush()
204{
205 var overlays_copy = [];
206 for (var i = 0; i<overlays.length; i++) {
207 var clone_shape = cloneShape(overlays[i]);
208 if (overlayItemIsShape(clone_shape)) {
209 addShapeListeners(clone_shape,null); // don't have an overlay event!
210 }
211 else {
212 addMarkerListeners(clone_shape,null); // don't have an overlay event!
213 }
214 overlays_copy[i] = clone_shape;
215 }
216
217 prevOverlays.push(overlays_copy);
218}
219
220function presentOverlayPush()
221{
222 presentOverlays = [];
223 var overlays_copy = [];
224 for (var i = 0; i<overlays.length; i++) {
225 var clone_shape = cloneShape(overlays[i]);
226 if (overlayItemIsShape(clone_shape)) {
227 addShapeListeners(clone_shape,null); // don't have an overlay event!
228 }
229 else {
230 addMarkerListeners(clone_shape,null); // don't have an overlay event!
231 }
232 overlays_copy[i] = clone_shape;
233 }
234
235 presentOverlays.push(overlays_copy);
236
237}
Note: See TracBrowser for help on using the repository browser.