[32710] | 1 | var prevOverlays = [];
|
---|
[32722] | 2 | var presentOverlays = [];
|
---|
| 3 | var undoneOverlays = [];
|
---|
[32723] | 4 | var enableSelectionFeature = false;
|
---|
[32710] | 5 |
|
---|
[32721] | 6 | function undo() {
|
---|
[32722] | 7 |
|
---|
[32710] | 8 | for (var i = 0; i < overlays.length; i++) {
|
---|
| 9 | overlays[i].setMap(null);
|
---|
| 10 |
|
---|
| 11 | }
|
---|
[32722] | 12 | if (prevOverlays.length != 0) {
|
---|
| 13 | selectedShapes = [];
|
---|
[32721] | 14 | overlays = [];
|
---|
[32722] | 15 | undoneOverlaysPush();
|
---|
[32721] | 16 | var prev_overlay = prevOverlays.pop();
|
---|
| 17 |
|
---|
[32722] | 18 | if(prev_overlay.length > 0) {
|
---|
| 19 | for (var i = 0; i < prev_overlay.length; i++) {
|
---|
[32721] | 20 | overlays[i] = prev_overlay[i];
|
---|
| 21 | overlays[i].setMap(map);
|
---|
[32722] | 22 | }
|
---|
[32721] | 23 | }
|
---|
| 24 |
|
---|
[32722] | 25 |
|
---|
[32721] | 26 | }
|
---|
[32722] | 27 |
|
---|
[32721] | 28 | //Deactivated at the moment
|
---|
[32722] | 29 | if (enableSelectionFeature) {
|
---|
[32721] | 30 | selectedShapes = [];
|
---|
| 31 | var i = 0;
|
---|
[32722] | 32 | var lastEntry = prevOverlays[prevOverlays.length - 1][i];
|
---|
| 33 | console.log(prevOverlays[prevOverlays.length - 1].length);
|
---|
| 34 |
|
---|
| 35 | for (var i = 0; i < lastEntry.length; i++) {
|
---|
[32721] | 36 | selectedShapes.push(prevOverlays)
|
---|
| 37 | console.log("comes here");
|
---|
| 38 | }
|
---|
[32722] | 39 |
|
---|
| 40 | }
|
---|
| 41 | }
|
---|
| 42 |
|
---|
| 43 | function redo() {
|
---|
| 44 |
|
---|
| 45 | if (undoneOverlays.length != 0) {
|
---|
| 46 | selectedShapes = [];
|
---|
| 47 | for (var i = 0; i < overlays.length; i++) {
|
---|
| 48 | overlays[i].setMap(null);
|
---|
| 49 | }
|
---|
| 50 | overlays = [];
|
---|
| 51 | var lastEntry = undoneOverlays[undoneOverlays.length - 1];
|
---|
| 52 | for (var i = 0; i < lastEntry.length; i++) {
|
---|
| 53 | overlays[i] = lastEntry[i];
|
---|
| 54 | overlays[i].setMap(map);
|
---|
| 55 | }
|
---|
[32723] | 56 | var conditionPrevious = presentOverlays[presentOverlays.length - 1] !== undefined ;
|
---|
[32721] | 57 |
|
---|
[32722] | 58 | if (conditionPrevious){
|
---|
| 59 | prevOverlays.push(presentOverlays[0]);
|
---|
| 60 | }
|
---|
| 61 |
|
---|
| 62 | presentOverlays = [];
|
---|
| 63 | //console.log("last undone", undoneOverlays[undoneOverlays.length -1]);
|
---|
| 64 | presentOverlays.push(undoneOverlays[undoneOverlays.length - 1]);
|
---|
| 65 | undoneOverlays.pop();
|
---|
| 66 |
|
---|
[32721] | 67 | }
|
---|
[32722] | 68 |
|
---|
[32710] | 69 | }
|
---|
| 70 |
|
---|
[32722] | 71 | function clonePath(path) {
|
---|
[32710] | 72 | var clone_path = [];
|
---|
[32722] | 73 |
|
---|
[32710] | 74 | for (var i = 0; i < path.length; i++) {
|
---|
| 75 | var lati = path.getAt(i).lat();
|
---|
| 76 | var lngi = path.getAt(i).lng();
|
---|
| 77 | clone_lat_lng = {
|
---|
| 78 | lat: lati,
|
---|
| 79 | lng: lngi
|
---|
| 80 | };
|
---|
| 81 | clone_path.push(clone_lat_lng);
|
---|
| 82 | }
|
---|
[32722] | 83 |
|
---|
[32710] | 84 | return clone_path;
|
---|
| 85 | }
|
---|
| 86 |
|
---|
[32722] | 87 | function clonePolyline(polyline) {
|
---|
| 88 | var path = polyline.getPath();
|
---|
| 89 | var geodesic = polyline.geodesic;
|
---|
| 90 | var strokeColor = polyline.strokeColor;
|
---|
[32710] | 91 | var strokeOpacity = polyline.strokeOpacity;
|
---|
[32722] | 92 | var strokeWeight = polyline.strokeWeight;
|
---|
| 93 | var clone_path = clonePath(path);
|
---|
[32721] | 94 | //var editable = rect.editable;
|
---|
[32722] | 95 |
|
---|
[32710] | 96 | var clone_polyline = new google.maps.Polyline({
|
---|
[32722] | 97 | geodesic: geodesic,
|
---|
| 98 | strokeColor: strokeColor,
|
---|
| 99 | strokeOpacity: strokeOpacity,
|
---|
| 100 | strokeWeight: strokeWeight,
|
---|
| 101 | path: clone_path,
|
---|
| 102 | draggable: true,
|
---|
| 103 | editable: false
|
---|
| 104 | });
|
---|
| 105 |
|
---|
[32710] | 106 | clone_polyline.type = google.maps.drawing.OverlayType.POLYLINE;
|
---|
[32722] | 107 |
|
---|
[32710] | 108 | return clone_polyline;
|
---|
| 109 | }
|
---|
| 110 |
|
---|
[32722] | 111 | function clonePolygon(polygon) {
|
---|
| 112 | var path = polygon.getPath();
|
---|
| 113 | var geodesic = polygon.geodesic;
|
---|
| 114 | var strokeColor = polygon.strokeColor;
|
---|
[32710] | 115 | var strokeOpacity = polygon.strokeOpacity;
|
---|
[32722] | 116 | var strokeWeight = polygon.strokeWeight;
|
---|
| 117 | var fillColor = polygon.fillColor;
|
---|
| 118 | var fillOpacity = polygon.fillOpacity;
|
---|
| 119 | var clone_path = clonePath(path);
|
---|
[32721] | 120 | //var editable = rect.editable;
|
---|
[32722] | 121 |
|
---|
[32710] | 122 | var clone_polygon = new google.maps.Polygon({
|
---|
[32722] | 123 | geodesic: geodesic,
|
---|
| 124 | strokeColor: strokeColor,
|
---|
| 125 | strokeOpacity: strokeOpacity,
|
---|
| 126 | strokeWeight: strokeWeight,
|
---|
| 127 | fillColor: fillColor,
|
---|
| 128 | fillOpacity: fillOpacity,
|
---|
| 129 | path: clone_path,
|
---|
| 130 | draggable: true,
|
---|
| 131 | editable: false
|
---|
| 132 | });
|
---|
| 133 |
|
---|
[32710] | 134 | clone_polygon.type = google.maps.drawing.OverlayType.POLYGON;
|
---|
[32722] | 135 |
|
---|
[32710] | 136 | return clone_polygon;
|
---|
| 137 | }
|
---|
| 138 |
|
---|
[32722] | 139 | function cloneRectangle(rect) {
|
---|
| 140 | var strokeColor = rect.strokeColor;
|
---|
[32710] | 141 | var strokeOpacity = rect.strokeOpacity;
|
---|
[32722] | 142 | var strokeWeight = rect.strokeWeight;
|
---|
| 143 | var fillColor = rect.fillColor;
|
---|
| 144 | var fillOpacity = rect.fillOpacity;
|
---|
| 145 | var bounds = rect.getBounds();
|
---|
[32721] | 146 | //var editable = rect.editable;
|
---|
[32722] | 147 |
|
---|
[32710] | 148 | var clone_rect = new google.maps.Rectangle({
|
---|
[32722] | 149 | strokeColor: strokeColor,
|
---|
| 150 | strokeOpacity: strokeOpacity,
|
---|
| 151 | strokeWeight: strokeWeight,
|
---|
| 152 | fillColor: fillColor,
|
---|
| 153 | fillOpacity: fillOpacity,
|
---|
| 154 | bounds: bounds,
|
---|
| 155 | draggable: true,
|
---|
| 156 | editable: false
|
---|
| 157 | });
|
---|
| 158 |
|
---|
[32710] | 159 | clone_rect.type = google.maps.drawing.OverlayType.RECTANGLE;
|
---|
[32722] | 160 |
|
---|
[32710] | 161 | return clone_rect;
|
---|
| 162 | }
|
---|
| 163 |
|
---|
[32722] | 164 | function cloneCircle(circ) {
|
---|
| 165 | var strokeColor = circ.strokeColor;
|
---|
[32710] | 166 | var strokeOpacity = circ.strokeOpacity;
|
---|
[32722] | 167 | var strokeWeight = circ.strokeWeight;
|
---|
| 168 | var fillColor = circ.fillColor;
|
---|
| 169 | var fillOpacity = circ.fillOpacity;
|
---|
| 170 | var center = circ.center;
|
---|
| 171 | var radius = circ.radius;
|
---|
[32721] | 172 | //var editable = rect.editable;
|
---|
[32722] | 173 |
|
---|
[32710] | 174 | var clone_circ = new google.maps.Circle({
|
---|
[32722] | 175 | strokeColor: strokeColor,
|
---|
| 176 | strokeOpacity: strokeOpacity,
|
---|
| 177 | strokeWeight: strokeWeight,
|
---|
| 178 | fillColor: fillColor,
|
---|
| 179 | fillOpacity: fillOpacity,
|
---|
| 180 | center: center,
|
---|
| 181 | radius: radius,
|
---|
| 182 | draggable: true,
|
---|
| 183 | editable: false
|
---|
| 184 | });
|
---|
| 185 |
|
---|
[32710] | 186 | clone_circ.type = google.maps.drawing.OverlayType.CIRCLE;
|
---|
[32722] | 187 |
|
---|
[32710] | 188 | return clone_circ;
|
---|
| 189 | }
|
---|
| 190 |
|
---|
[32723] | 191 | function cloneMarker(marker) {
|
---|
| 192 | var position = marker.getPosition();
|
---|
| 193 | var anchorPoint = marker.anchorPoint;
|
---|
| 194 | var clone_marker = new google.maps.Marker({
|
---|
| 195 | anchorPoint: anchorPoint,
|
---|
| 196 | position : position,
|
---|
| 197 | clickable: true,
|
---|
| 198 | draggable: true,
|
---|
| 199 | editable: false
|
---|
| 200 | })
|
---|
| 201 | clone_marker.type = google.maps.drawing.OverlayType.MARKER;
|
---|
| 202 |
|
---|
| 203 | return clone_marker;
|
---|
| 204 | }
|
---|
| 205 |
|
---|
[32722] | 206 | function cloneShape(shape) {
|
---|
[32710] | 207 | if (shape.type === google.maps.drawing.OverlayType.POLYLINE) {
|
---|
| 208 | var clone_polyline = clonePolyline(shape);
|
---|
| 209 | return clone_polyline;
|
---|
[32722] | 210 | } else if (shape.type === google.maps.drawing.OverlayType.POLYGON) {
|
---|
[32710] | 211 | var clone_polygon = clonePolygon(shape);
|
---|
| 212 | return clone_polygon;
|
---|
[32722] | 213 | } else if (shape.type === google.maps.drawing.OverlayType.RECTANGLE) {
|
---|
[32710] | 214 | var clone_rect = cloneRectangle(shape);
|
---|
| 215 | return clone_rect;
|
---|
[32722] | 216 |
|
---|
| 217 | } else if (shape.type === google.maps.drawing.OverlayType.CIRCLE) {
|
---|
[32710] | 218 | var clone_circ = cloneCircle(shape);
|
---|
| 219 | return clone_circ;
|
---|
[32722] | 220 |
|
---|
| 221 | } else {
|
---|
[32723] | 222 | var clone_marker = cloneMarker(shape);
|
---|
| 223 | return clone_marker;
|
---|
[32710] | 224 | }
|
---|
[32722] | 225 | console.log(cloneShape);
|
---|
[32710] | 226 | }
|
---|
| 227 |
|
---|
[32722] | 228 | function overlayItemIsShape(overlay_item) {
|
---|
[32721] | 229 | var type = overlay_item.type;
|
---|
[32722] | 230 |
|
---|
[32721] | 231 | is_shape = (type === google.maps.drawing.OverlayType.POLYLINE)
|
---|
| 232 | || (type === google.maps.drawing.OverlayType.POLYGON)
|
---|
| 233 | || (type === google.maps.drawing.OverlayType.RECTANGLE)
|
---|
| 234 | || (type === google.maps.drawing.OverlayType.CIRCLE);
|
---|
[32722] | 235 |
|
---|
| 236 | return is_shape;
|
---|
[32721] | 237 | }
|
---|
| 238 |
|
---|
[32722] | 239 | function historyOverlayPush() {
|
---|
| 240 | undoneOverlays = [];
|
---|
[32710] | 241 | var overlays_copy = [];
|
---|
[32722] | 242 | for (var i = 0; i < overlays.length; i++) {
|
---|
[32723] | 243 |
|
---|
[32710] | 244 | var clone_shape = cloneShape(overlays[i]);
|
---|
[32721] | 245 | if (overlayItemIsShape(clone_shape)) {
|
---|
[32722] | 246 | addShapeListeners(clone_shape, null); // don't have an overlay event!
|
---|
| 247 | } else {
|
---|
| 248 | addMarkerListeners(clone_shape, null); // don't have an overlay event!
|
---|
[32721] | 249 | }
|
---|
[32722] | 250 | overlays_copy[i] = clone_shape;
|
---|
| 251 | }
|
---|
| 252 |
|
---|
| 253 | prevOverlays.push(overlays_copy);
|
---|
| 254 |
|
---|
| 255 | }
|
---|
| 256 |
|
---|
| 257 | function presentOverlayPush() {
|
---|
| 258 | if (resizeEntry) {
|
---|
| 259 | prevOverlays.push(presentOverlays[0]);
|
---|
| 260 | }
|
---|
| 261 | presentOverlays = [];
|
---|
| 262 | var overlays_copy = [];
|
---|
| 263 | for (var i = 0; i < overlays.length; i++) {
|
---|
| 264 | var clone_shape = cloneShape(overlays[i]);
|
---|
| 265 | if (overlayItemIsShape(clone_shape)) {
|
---|
| 266 | addShapeListeners(clone_shape, null); // don't have an overlay event!
|
---|
| 267 | } else {
|
---|
| 268 | addMarkerListeners(clone_shape, null); // don't have an overlay event!
|
---|
[32721] | 269 | }
|
---|
[32710] | 270 | overlays_copy[i] = clone_shape;
|
---|
| 271 | }
|
---|
[32722] | 272 | presentOverlays.push(overlays_copy);
|
---|
[32710] | 273 | }
|
---|
[32722] | 274 |
|
---|
| 275 | function undoneOverlaysPush() {
|
---|
[32723] | 276 | var conditionUndone = presentOverlays[presentOverlays.length - 1] !== undefined;
|
---|
[32722] | 277 |
|
---|
| 278 | if (conditionUndone) {
|
---|
| 279 | undoneOverlays.push(presentOverlays[0]);
|
---|
| 280 | }
|
---|
| 281 | presentOverlays = [];
|
---|
[32723] | 282 | var conditionPresent = prevOverlays[prevOverlays.length - 1] !== undefined;
|
---|
[32722] | 283 |
|
---|
| 284 | if (conditionPresent) {
|
---|
| 285 | presentOverlays.push(prevOverlays[prevOverlays.length - 1]);
|
---|
| 286 |
|
---|
| 287 | }
|
---|
| 288 | } |
---|