gmapsjs-rails 0.2.30.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,205 @@
1
+ GMaps.prototype.drawPolyline = function(options) {
2
+ var path = [],
3
+ points = options.path;
4
+
5
+ if (points.length) {
6
+ if (points[0][0] === undefined) {
7
+ path = points;
8
+ }
9
+ else {
10
+ for (var i=0, latlng; latlng=points[i]; i++) {
11
+ path.push(new google.maps.LatLng(latlng[0], latlng[1]));
12
+ }
13
+ }
14
+ }
15
+
16
+ var polyline_options = {
17
+ map: this.map,
18
+ path: path,
19
+ strokeColor: options.strokeColor,
20
+ strokeOpacity: options.strokeOpacity,
21
+ strokeWeight: options.strokeWeight,
22
+ geodesic: options.geodesic,
23
+ clickable: true,
24
+ editable: false,
25
+ visible: true
26
+ };
27
+
28
+ if (options.hasOwnProperty("clickable")) {
29
+ polyline_options.clickable = options.clickable;
30
+ }
31
+
32
+ if (options.hasOwnProperty("editable")) {
33
+ polyline_options.editable = options.editable;
34
+ }
35
+
36
+ if (options.hasOwnProperty("icons")) {
37
+ polyline_options.icons = options.icons;
38
+ }
39
+
40
+ if (options.hasOwnProperty("zIndex")) {
41
+ polyline_options.zIndex = options.zIndex;
42
+ }
43
+
44
+ var polyline = new google.maps.Polyline(polyline_options);
45
+
46
+ var polyline_events = ['click', 'dblclick', 'mousedown', 'mousemove', 'mouseout', 'mouseover', 'mouseup', 'rightclick'];
47
+
48
+ for (var ev = 0; ev < polyline_events.length; ev++) {
49
+ (function(object, name) {
50
+ if (options[name]) {
51
+ google.maps.event.addListener(object, name, function(e){
52
+ options[name].apply(this, [e]);
53
+ });
54
+ }
55
+ })(polyline, polyline_events[ev]);
56
+ }
57
+
58
+ this.polylines.push(polyline);
59
+
60
+ GMaps.fire('polyline_added', polyline, this);
61
+
62
+ return polyline;
63
+ };
64
+
65
+ GMaps.prototype.removePolyline = function(polyline) {
66
+ for (var i = 0; i < this.polylines.length; i++) {
67
+ if (this.polylines[i] === polyline) {
68
+ this.polylines[i].setMap(null);
69
+ this.polylines.splice(i, 1);
70
+
71
+ GMaps.fire('polyline_removed', polyline, this);
72
+
73
+ break;
74
+ }
75
+ }
76
+ };
77
+
78
+ GMaps.prototype.removePolylines = function() {
79
+ for (var i = 0, item; item = this.polylines[i]; i++) {
80
+ item.setMap(null);
81
+ }
82
+
83
+ this.polylines = [];
84
+ };
85
+
86
+ GMaps.prototype.drawCircle = function(options) {
87
+ options = extend_object({
88
+ map: this.map,
89
+ center: new google.maps.LatLng(options.lat, options.lng)
90
+ }, options);
91
+
92
+ delete options.lat;
93
+ delete options.lng;
94
+
95
+ var polygon = new google.maps.Circle(options),
96
+ polygon_events = ['click', 'dblclick', 'mousedown', 'mousemove', 'mouseout', 'mouseover', 'mouseup', 'rightclick'];
97
+
98
+ for (var ev = 0; ev < polygon_events.length; ev++) {
99
+ (function(object, name) {
100
+ if (options[name]) {
101
+ google.maps.event.addListener(object, name, function(e){
102
+ options[name].apply(this, [e]);
103
+ });
104
+ }
105
+ })(polygon, polygon_events[ev]);
106
+ }
107
+
108
+ this.polygons.push(polygon);
109
+
110
+ return polygon;
111
+ };
112
+
113
+ GMaps.prototype.drawRectangle = function(options) {
114
+ options = extend_object({
115
+ map: this.map
116
+ }, options);
117
+
118
+ var latLngBounds = new google.maps.LatLngBounds(
119
+ new google.maps.LatLng(options.bounds[0][0], options.bounds[0][1]),
120
+ new google.maps.LatLng(options.bounds[1][0], options.bounds[1][1])
121
+ );
122
+
123
+ options.bounds = latLngBounds;
124
+
125
+ var polygon = new google.maps.Rectangle(options),
126
+ polygon_events = ['click', 'dblclick', 'mousedown', 'mousemove', 'mouseout', 'mouseover', 'mouseup', 'rightclick'];
127
+
128
+ for (var ev = 0; ev < polygon_events.length; ev++) {
129
+ (function(object, name) {
130
+ if (options[name]) {
131
+ google.maps.event.addListener(object, name, function(e){
132
+ options[name].apply(this, [e]);
133
+ });
134
+ }
135
+ })(polygon, polygon_events[ev]);
136
+ }
137
+
138
+ this.polygons.push(polygon);
139
+
140
+ return polygon;
141
+ };
142
+
143
+ GMaps.prototype.drawPolygon = function(options) {
144
+ var useGeoJSON = false;
145
+
146
+ if(options.hasOwnProperty("useGeoJSON")) {
147
+ useGeoJSON = options.useGeoJSON;
148
+ }
149
+
150
+ delete options.useGeoJSON;
151
+
152
+ options = extend_object({
153
+ map: this.map
154
+ }, options);
155
+
156
+ if (useGeoJSON == false) {
157
+ options.paths = [options.paths.slice(0)];
158
+ }
159
+
160
+ if (options.paths.length > 0) {
161
+ if (options.paths[0].length > 0) {
162
+ options.paths = array_flat(array_map(options.paths, arrayToLatLng, useGeoJSON));
163
+ }
164
+ }
165
+
166
+ var polygon = new google.maps.Polygon(options),
167
+ polygon_events = ['click', 'dblclick', 'mousedown', 'mousemove', 'mouseout', 'mouseover', 'mouseup', 'rightclick'];
168
+
169
+ for (var ev = 0; ev < polygon_events.length; ev++) {
170
+ (function(object, name) {
171
+ if (options[name]) {
172
+ google.maps.event.addListener(object, name, function(e){
173
+ options[name].apply(this, [e]);
174
+ });
175
+ }
176
+ })(polygon, polygon_events[ev]);
177
+ }
178
+
179
+ this.polygons.push(polygon);
180
+
181
+ GMaps.fire('polygon_added', polygon, this);
182
+
183
+ return polygon;
184
+ };
185
+
186
+ GMaps.prototype.removePolygon = function(polygon) {
187
+ for (var i = 0; i < this.polygons.length; i++) {
188
+ if (this.polygons[i] === polygon) {
189
+ this.polygons[i].setMap(null);
190
+ this.polygons.splice(i, 1);
191
+
192
+ GMaps.fire('polygon_removed', polygon, this);
193
+
194
+ break;
195
+ }
196
+ }
197
+ };
198
+
199
+ GMaps.prototype.removePolygons = function() {
200
+ for (var i = 0, item; item = this.polygons[i]; i++) {
201
+ item.setMap(null);
202
+ }
203
+
204
+ this.polygons = [];
205
+ };