mapstraction-rails 2.0.18.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.
Files changed (65) hide show
  1. data/Gemfile +4 -0
  2. data/Gemfile.lock +14 -0
  3. data/LICENSE +22 -0
  4. data/README.md +32 -0
  5. data/Rakefile +2 -0
  6. data/lib/mapstraction/engine.rb +4 -0
  7. data/lib/mapstraction/version.rb +3 -0
  8. data/lib/mapstraction.rb +5 -0
  9. data/mapstraction/.gitignore +17 -0
  10. data/mapstraction.gemspec +17 -0
  11. data/vendor/.DS_Store +0 -0
  12. data/vendor/assets/.DS_Store +0 -0
  13. data/vendor/assets/javascripts/mxn-min.js +15 -0
  14. data/vendor/assets/javascripts/mxn.cartociudad.geocoder-min.js +15 -0
  15. data/vendor/assets/javascripts/mxn.cartociudad.geocoder.js +46 -0
  16. data/vendor/assets/javascripts/mxn.cloudmade.core-min.js +15 -0
  17. data/vendor/assets/javascripts/mxn.cloudmade.core.js +383 -0
  18. data/vendor/assets/javascripts/mxn.core-min.js +15 -0
  19. data/vendor/assets/javascripts/mxn.core.js +1892 -0
  20. data/vendor/assets/javascripts/mxn.geocoder-min.js +15 -0
  21. data/vendor/assets/javascripts/mxn.geocoder.js +74 -0
  22. data/vendor/assets/javascripts/mxn.geocommons.core-min.js +15 -0
  23. data/vendor/assets/javascripts/mxn.geocommons.core.js +343 -0
  24. data/vendor/assets/javascripts/mxn.google.core-min.js +15 -0
  25. data/vendor/assets/javascripts/mxn.google.core.js +536 -0
  26. data/vendor/assets/javascripts/mxn.google.geocoder-min.js +15 -0
  27. data/vendor/assets/javascripts/mxn.google.geocoder.js +87 -0
  28. data/vendor/assets/javascripts/mxn.googleearth.core-min.js +15 -0
  29. data/vendor/assets/javascripts/mxn.googleearth.core.js +350 -0
  30. data/vendor/assets/javascripts/mxn.googlev3.core-min.js +15 -0
  31. data/vendor/assets/javascripts/mxn.googlev3.core.js +630 -0
  32. data/vendor/assets/javascripts/mxn.googlev3.geocoder-min.js +15 -0
  33. data/vendor/assets/javascripts/mxn.googlev3.geocoder.js +101 -0
  34. data/vendor/assets/javascripts/mxn.js +581 -0
  35. data/vendor/assets/javascripts/mxn.leaflet.core-min.js +15 -0
  36. data/vendor/assets/javascripts/mxn.leaflet.core.js +398 -0
  37. data/vendor/assets/javascripts/mxn.mapquest.geocoder-min.js +15 -0
  38. data/vendor/assets/javascripts/mxn.mapquest.geocoder.js +63 -0
  39. data/vendor/assets/javascripts/mxn.microsoft.core-min.js +15 -0
  40. data/vendor/assets/javascripts/mxn.microsoft.core.js +429 -0
  41. data/vendor/assets/javascripts/mxn.microsoft7.core-min.js +15 -0
  42. data/vendor/assets/javascripts/mxn.microsoft7.core.js +458 -0
  43. data/vendor/assets/javascripts/mxn.microsoft7.geocoder-min.js +15 -0
  44. data/vendor/assets/javascripts/mxn.microsoft7.geocoder.js +66 -0
  45. data/vendor/assets/javascripts/mxn.multimap.core-min.js +15 -0
  46. data/vendor/assets/javascripts/mxn.multimap.core.js +473 -0
  47. data/vendor/assets/javascripts/mxn.openlayers.core-min.js +15 -0
  48. data/vendor/assets/javascripts/mxn.openlayers.core.js +630 -0
  49. data/vendor/assets/javascripts/mxn.openlayers.geocoder-min.js +15 -0
  50. data/vendor/assets/javascripts/mxn.openlayers.geocoder.js +106 -0
  51. data/vendor/assets/javascripts/mxn.openmq.core-min.js +15 -0
  52. data/vendor/assets/javascripts/mxn.openmq.core.js +364 -0
  53. data/vendor/assets/javascripts/mxn.openspace.core-min.js +15 -0
  54. data/vendor/assets/javascripts/mxn.openspace.core.js +460 -0
  55. data/vendor/assets/javascripts/mxn.ovi.core-min.js +15 -0
  56. data/vendor/assets/javascripts/mxn.ovi.core.js +508 -0
  57. data/vendor/assets/javascripts/mxn.ovi.geocoder-min.js +15 -0
  58. data/vendor/assets/javascripts/mxn.ovi.geocoder.js +129 -0
  59. data/vendor/assets/javascripts/mxn.yahoo.core-min.js +15 -0
  60. data/vendor/assets/javascripts/mxn.yahoo.core.js +406 -0
  61. data/vendor/assets/javascripts/mxn.yandex.core-min.js +15 -0
  62. data/vendor/assets/javascripts/mxn.yandex.core.js +527 -0
  63. data/vendor/assets/javascripts/mxn.yandex.geocoder-min.js +15 -0
  64. data/vendor/assets/javascripts/mxn.yandex.geocoder.js +66 -0
  65. metadata +110 -0
@@ -0,0 +1,350 @@
1
+ /*
2
+ MAPSTRACTION v2.0.18 http://www.mapstraction.com
3
+
4
+ Copyright (c) 2012 Tom Carden, Steve Coast, Mikel Maron, Andrew Turner, Henri Bergius, Rob Moran, Derek Fowler, Gary Gale
5
+ All rights reserved.
6
+
7
+ Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
8
+
9
+ * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
10
+ * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
11
+ * Neither the name of the Mapstraction nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission.
12
+
13
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
14
+ */
15
+ mxn.register('googleearth', {
16
+
17
+ Mapstraction: {
18
+
19
+ init: function(element, api) {
20
+ var me = this;
21
+
22
+ this.maps[api] = null;
23
+
24
+ google.earth.createInstance(
25
+ element,
26
+ function initCallback(object) {
27
+ me.maps[api] = object;
28
+ me.maps[api].getWindow().setVisibility(true);
29
+ initMap();
30
+ },
31
+ function failureCallback(object) {
32
+ throw 'Failed to create Google Earth map';
33
+ }
34
+ );
35
+
36
+ },
37
+
38
+ applyOptions: function(){
39
+ var map = this.maps[this.api];
40
+
41
+ // TODO: Add provider code
42
+ },
43
+
44
+ resizeTo: function(width, height){
45
+ // TODO: Add provider code
46
+ },
47
+
48
+ addControls: function( args ) {
49
+ var map = this.maps[this.api];
50
+
51
+ // TODO: Add provider code
52
+ },
53
+
54
+ addSmallControls: function() {
55
+ var map = this.maps[this.api];
56
+
57
+ // TODO: Add provider code
58
+ },
59
+
60
+ addLargeControls: function() {
61
+ var map = this.maps[this.api];
62
+
63
+ // TODO: Add provider code
64
+ },
65
+
66
+ addMapTypeControls: function() {
67
+ var map = this.maps[this.api];
68
+
69
+ // TODO: Add provider code
70
+ },
71
+
72
+ dragging: function(on) {
73
+ var map = this.maps[this.api];
74
+
75
+ // TODO: Add provider code
76
+ },
77
+
78
+ setCenterAndZoom: function(point, zoom) {
79
+ var map = this.maps[this.api];
80
+ var pt = point.toProprietary(this.api);
81
+
82
+ var lookAt = map.getView().copyAsLookAt(map.ALTITUDE_RELATIVE_TO_GROUND);
83
+
84
+ // Set new latitude and longitude values
85
+ lookAt.setLatitude(point.lat);
86
+ lookAt.setLongitude(point.lon);
87
+ lookAt.setRange(lookAt.getRange() / 7.0);
88
+
89
+ // Update the view in Google Earth
90
+ map.getView().setAbstractView(lookAt);
91
+ },
92
+
93
+ addMarker: function(marker, old) {
94
+ var map = this.maps[this.api];
95
+ var pin = marker.toProprietary(this.api);
96
+
97
+ // TODO: Add provider code
98
+
99
+ return pin;
100
+ },
101
+
102
+ removeMarker: function(marker) {
103
+ var map = this.maps[this.api];
104
+
105
+ // TODO: Add provider code
106
+ },
107
+
108
+ removeAllMarkers: function() {
109
+ var map = this.maps[this.api];
110
+
111
+ // TODO: Add provider code
112
+ },
113
+
114
+ declutterMarkers: function(opts) {
115
+ var map = this.maps[this.api];
116
+
117
+ // TODO: Add provider code
118
+ },
119
+
120
+ addPolyline: function(polyline, old) {
121
+ var map = this.maps[this.api];
122
+ var pl = polyline.toProprietary(this.api);
123
+
124
+ // TODO: Add provider code
125
+
126
+ return pl;
127
+ },
128
+
129
+ removePolyline: function(polyline) {
130
+ var map = this.maps[this.api];
131
+
132
+ // TODO: Add provider code
133
+ },
134
+
135
+ getCenter: function() {
136
+ var point;
137
+ var map = this.maps[this.api];
138
+
139
+ var lookAt = map.getView().copyAsLookAt(map.ALTITUDE_RELATIVE_TO_GROUND);
140
+ point = new mxn.LatLonPoint(lookAt.getLatitude(),lookAt.getLongitude());
141
+ return point;
142
+ },
143
+
144
+ setCenter: function(point, options) {
145
+ var map = this.maps[this.api];
146
+ var pt = point.toProprietary(this.api);
147
+ if(options && options.pan) {
148
+ // TODO: Add provider code
149
+ }
150
+ else {
151
+ // TODO: Add provider code
152
+ }
153
+ },
154
+
155
+ setZoom: function(zoom) {
156
+ var map = this.maps[this.api];
157
+
158
+ // TODO: Add provider code
159
+
160
+ },
161
+
162
+ getZoom: function() {
163
+ var map = this.maps[this.api];
164
+ var zoom = 5;
165
+
166
+ // TODO: Add provider code
167
+
168
+ return zoom;
169
+ },
170
+
171
+ getZoomLevelForBoundingBox: function( bbox ) {
172
+ var map = this.maps[this.api];
173
+ // NE and SW points from the bounding box.
174
+ var ne = bbox.getNorthEast();
175
+ var sw = bbox.getSouthWest();
176
+ var zoom;
177
+
178
+ // TODO: Add provider code
179
+
180
+ return zoom;
181
+ },
182
+
183
+ setMapType: function(type) {
184
+ var map = this.maps[this.api];
185
+ switch(type) {
186
+ case mxn.Mapstraction.ROAD:
187
+ // TODO: Add provider code
188
+ break;
189
+ case mxn.Mapstraction.SATELLITE:
190
+ // TODO: Add provider code
191
+ break;
192
+ case mxn.Mapstraction.HYBRID:
193
+ // TODO: Add provider code
194
+ break;
195
+ default:
196
+ // TODO: Add provider code
197
+ }
198
+ },
199
+
200
+ getMapType: function() {
201
+ var map = this.maps[this.api];
202
+
203
+ // TODO: Add provider code
204
+
205
+ //return mxn.Mapstraction.ROAD;
206
+ //return mxn.Mapstraction.SATELLITE;
207
+ //return mxn.Mapstraction.HYBRID;
208
+
209
+ },
210
+
211
+ getBounds: function () {
212
+ var map = this.maps[this.api];
213
+
214
+ // TODO: Add provider code
215
+
216
+ //return new mxn.BoundingBox( , , , );
217
+ },
218
+
219
+ setBounds: function(bounds){
220
+ var map = this.maps[this.api];
221
+ var sw = bounds.getSouthWest();
222
+ var ne = bounds.getNorthEast();
223
+
224
+ // TODO: Add provider code
225
+
226
+ },
227
+
228
+ addImageOverlay: function(id, src, opacity, west, south, east, north, oContext) {
229
+ var map = this.maps[this.api];
230
+
231
+ // TODO: Add provider code
232
+ },
233
+
234
+ setImagePosition: function(id, oContext) {
235
+ var map = this.maps[this.api];
236
+ var topLeftPoint; var bottomRightPoint;
237
+
238
+ // TODO: Add provider code
239
+
240
+ //oContext.pixels.top = ...;
241
+ //oContext.pixels.left = ...;
242
+ //oContext.pixels.bottom = ...;
243
+ //oContext.pixels.right = ...;
244
+ },
245
+
246
+ addOverlay: function(url, autoCenterAndZoom) {
247
+ var map = this.maps[this.api];
248
+
249
+ // TODO: Add provider code
250
+
251
+ },
252
+
253
+ addTileLayer: function(tile_url, opacity, copyright_text, min_zoom, max_zoom) {
254
+ var map = this.maps[this.api];
255
+ var me = this;
256
+
257
+ google.earth.fetchKml(map, tile_url, function(kmlObject) {
258
+ if (kmlObject) {
259
+ map.getFeatures().appendChild(kmlObject);
260
+ me.tileLayers.push( [tile_url, kmlObject, true] );
261
+ }
262
+ else {
263
+ throw 'Invalid KML file';
264
+ }
265
+ });
266
+ },
267
+
268
+ toggleTileLayer: function(tile_url) {
269
+ var map = this.maps[this.api];
270
+
271
+ for (var f=0; f<this.tileLayers.length; f++) {
272
+ if(this.tileLayers[f][0] == tile_url) {
273
+ if(this.tileLayers[f][2]) {
274
+ map.getFeatures().removeChild(this.tileLayers[f][1]);
275
+ this.tileLayers[f][2] = false;
276
+ }
277
+ else {
278
+ map.getFeatures().appendChild(this.tileLayers[f][1]);
279
+ this.tileLayers[f][2] = true;
280
+ }
281
+ }
282
+ }
283
+ },
284
+
285
+ getPixelRatio: function() {
286
+ var map = this.maps[this.api];
287
+
288
+ // TODO: Add provider code
289
+ },
290
+
291
+ mousePosition: function(element) {
292
+ var map = this.maps[this.api];
293
+
294
+ // TODO: Add provider code
295
+ }
296
+ },
297
+
298
+ LatLonPoint: {
299
+
300
+ toProprietary: function() {
301
+ // TODO: Add provider code
302
+ },
303
+
304
+ fromProprietary: function(googlePoint) {
305
+ // TODO: Add provider code
306
+ }
307
+
308
+ },
309
+
310
+ Marker: {
311
+
312
+ toProprietary: function() {
313
+ // TODO: Add provider code
314
+ },
315
+
316
+ openBubble: function() {
317
+ // TODO: Add provider code
318
+ },
319
+
320
+ hide: function() {
321
+ // TODO: Add provider code
322
+ },
323
+
324
+ show: function() {
325
+ // TODO: Add provider code
326
+ },
327
+
328
+ update: function() {
329
+ // TODO: Add provider code
330
+ }
331
+
332
+ },
333
+
334
+ Polyline: {
335
+
336
+ toProprietary: function() {
337
+ // TODO: Add provider code
338
+ },
339
+
340
+ show: function() {
341
+ // TODO: Add provider code
342
+ },
343
+
344
+ hide: function() {
345
+ // TODO: Add provider code
346
+ }
347
+
348
+ }
349
+
350
+ });
@@ -0,0 +1,15 @@
1
+ /*
2
+ MAPSTRACTION v2.0.18 http://www.mapstraction.com
3
+
4
+ Copyright (c) 2012 Tom Carden, Steve Coast, Mikel Maron, Andrew Turner, Henri Bergius, Rob Moran, Derek Fowler, Gary Gale
5
+ All rights reserved.
6
+
7
+ Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
8
+
9
+ * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
10
+ * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
11
+ * Neither the name of the Mapstraction nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission.
12
+
13
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
14
+ */
15
+ mxn.register("googlev3",{Mapstraction:{init:function(d,e){var f=this;if(google&&google.maps){var b={disableDefaultUI:true,mapTypeId:google.maps.MapTypeId.ROADMAP,mapTypeControl:false,mapTypeControlOptions:null,navigationControl:false,navigationControlOptions:null,scrollwheel:false};var c=null;if(d.currentStyle){c=d.currentStyle["background-color"]}else{if(window.getComputedStyle){c=document.defaultView.getComputedStyle(d,null).getPropertyValue("background-color")}}if(c&&"transparent"!==c){b.backgroundColor=c}if(!this.addControlsArgs&&loadoptions.addControlsArgs){this.addControlsArgs=loadoptions.addControlsArgs}if(this.addControlsArgs){if(this.addControlsArgs.zoom){b.navigationControl=true;if(this.addControlsArgs.zoom=="small"){b.navigationControlOptions={style:google.maps.NavigationControlStyle.SMALL}}if(this.addControlsArgs.zoom=="large"){b.navigationControlOptions={style:google.maps.NavigationControlStyle.ZOOM_PAN}}}if(this.addControlsArgs.map_type){b.mapTypeControl=true;b.mapTypeControlOptions={style:google.maps.MapTypeControlStyle.DEFAULT}}if(this.addControlsArgs.overview){b.overviewMapControl=true;b.overviewMapControlOptions={opened:true}}}var g=new google.maps.Map(d,b);var a=[];google.maps.event.addListener(g,"idle",function(){var k=a.length;if(k>0){var j=a.splice(0,k);var i;while((i=j.shift())){i()}}});google.maps.event.addListener(g,"click",function(i){f.click.fire({location:new mxn.LatLonPoint(i.latLng.lat(),i.latLng.lng())})});google.maps.event.addListener(g,"zoom_changed",function(){a.push(function(){f.changeZoom.fire()})});google.maps.event.addListener(g,"dragend",function(){f.moveendHandler(f);f.endPan.fire()});var h=google.maps.event.addListener(g,"tilesloaded",function(){f.load.fire();google.maps.event.removeListener(h)});this.maps[e]=g;this.loaded[e]=true}else{alert(e+" map script not imported")}},applyOptions:function(){var b=this.maps[this.api];var a=[];if(this.options.enableDragging){a.draggable=true}if(this.options.enableScrollWheelZoom){a.scrollwheel=true}b.setOptions(a)},resizeTo:function(b,a){this.currentElement.style.width=b;this.currentElement.style.height=a;var c=this.maps[this.api];google.maps.event.trigger(c,"resize")},addControls:function(b){var c=this.maps[this.api];var a;if(b.zoom||b.pan){if(b.zoom=="large"){this.addLargeControls()}else{this.addSmallControls()}}if(b.scale){a={scaleControl:true,scaleControlOptions:{style:google.maps.ScaleControlStyle.DEFAULT}};c.setOptions(a);this.addControlsArgs.scale=true}if(b.map_type){this.addMapTypeControls()}if(b.overview){a={overviewMapControl:true,overviewMapControlOptions:{opened:true}};c.setOptions(a);this.addControlsArgs.overview=true}},addSmallControls:function(){var b=this.maps[this.api];var a={navigationControl:true,navigationControlOptions:{style:google.maps.NavigationControlStyle.SMALL}};b.setOptions(a);this.addControlsArgs.pan=false;this.addControlsArgs.scale=false;this.addControlsArgs.zoom="small"},addLargeControls:function(){var b=this.maps[this.api];var a={navigationControl:true,navigationControlOptions:{style:google.maps.NavigationControlStyle.DEFAULT}};b.setOptions(a);this.addControlsArgs.pan=true;this.addControlsArgs.zoom="large"},addMapTypeControls:function(){var b=this.maps[this.api];var a={mapTypeControl:true,mapTypeControlOptions:{style:google.maps.MapTypeControlStyle.DEFAULT}};b.setOptions(a);this.addControlsArgs.map_type=true},setCenterAndZoom:function(a,b){var d=this.maps[this.api];var c=a.toProprietary(this.api);d.setCenter(c);d.setZoom(b)},addMarker:function(b,a){return b.toProprietary(this.api)},removeMarker:function(a){a.hide()},declutterMarkers:function(a){var b=this.maps[this.api]},addPolyline:function(c,b){var d=this.maps[this.api];var a=c.toProprietary(this.api);a.setMap(d);return a},removePolyline:function(a){var b=this.maps[this.api];a.proprietary_polyline.setMap(null)},getCenter:function(){var b=this.maps[this.api];var a=b.getCenter();return new mxn.LatLonPoint(a.lat(),a.lng())},setCenter:function(a,b){var d=this.maps[this.api];var c=a.toProprietary(this.api);if(b&&b.pan){d.panTo(c)}else{d.setCenter(c)}},setZoom:function(a){var b=this.maps[this.api];b.setZoom(a)},getZoom:function(){var a=this.maps[this.api];return a.getZoom()},getZoomLevelForBoundingBox:function(e){var d=this.maps[this.api];var a=e.getSouthWest().toProprietary(this.api);var c=e.getNorthEast().toProprietary(this.api);var b=new google.maps.LatLngBounds(a,c);d.fitBounds(b);return d.getZoom()},setMapType:function(a){var b=this.maps[this.api];switch(a){case mxn.Mapstraction.ROAD:b.setMapTypeId(google.maps.MapTypeId.ROADMAP);break;case mxn.Mapstraction.SATELLITE:b.setMapTypeId(google.maps.MapTypeId.SATELLITE);break;case mxn.Mapstraction.HYBRID:b.setMapTypeId(google.maps.MapTypeId.HYBRID);break;case mxn.Mapstraction.PHYSICAL:b.setMapTypeId(google.maps.MapTypeId.TERRAIN);break;default:b.setMapTypeId(google.maps.MapTypeId.ROADMAP)}},getMapType:function(){var b=this.maps[this.api];var a=b.getMapTypeId();switch(a){case google.maps.MapTypeId.ROADMAP:return mxn.Mapstraction.ROAD;case google.maps.MapTypeId.SATELLITE:return mxn.Mapstraction.SATELLITE;case google.maps.MapTypeId.HYBRID:return mxn.Mapstraction.HYBRID;case google.maps.MapTypeId.TERRAIN:return mxn.Mapstraction.PHYSICAL;default:return null}},getBounds:function(){var d=this.maps[this.api];var c=d.getBounds();if(!c){throw"Bounds not available, map must be initialized"}var a=c.getSouthWest();var b=c.getNorthEast();return new mxn.BoundingBox(a.lat(),a.lng(),b.lat(),b.lng())},setBounds:function(b){var e=this.maps[this.api];var a=b.getSouthWest().toProprietary(this.api);var d=b.getNorthEast().toProprietary(this.api);var c=new google.maps.LatLngBounds(a,d);e.fitBounds(c)},addImageOverlay:function(c,a,f,k,g,i,e,j){var b=this.maps[this.api];var h=new google.maps.LatLngBounds(new google.maps.LatLng(g,k),new google.maps.LatLng(e,i));var d=new google.maps.GroundOverlay(a,h);d.setMap(b)},setImagePosition:function(b,a){},addOverlay:function(a,d){var e=this.maps[this.api];var c={preserveViewport:(!d)};var b=new google.maps.KmlLayer(a,c);b.setMap(e)},addTileLayer:function(l,g,d,k,h,m){var a=this.maps[this.api];var j=[];var i=this.tileLayers.length||0;j[0]={getTileUrl:function(o,f){url=l;url=url.replace(/\{Z\}/g,f);url=url.replace(/\{X\}/g,o.x);url=url.replace(/\{Y\}/g,o.y);return url},tileSize:new google.maps.Size(256,256),isPng:true,minZoom:k,maxZoom:h,opacity:g,name:d};var n=new google.maps.ImageMapType(j[0]);if(m){a.mapTypes.set("tile"+i,n);var c=[google.maps.MapTypeId.ROADMAP,google.maps.MapTypeId.HYBRID,google.maps.MapTypeId.SATELLITE,google.maps.MapTypeId.TERRAIN];for(var e=0;e<this.tileLayers.length;e++){c.push("tile"+e)}var b={mapTypeControlOptions:{mapTypeIds:c}};a.setOptions(b)}else{a.overlayMapTypes.insertAt(i,n)}this.tileLayers.push([l,n,true,i]);return n},toggleTileLayer:function(d){var b=this.maps[this.api];for(var a=0;a<this.tileLayers.length;a++){var c=this.tileLayers[a];if(c[0]==d){if(c[2]){b.overlayMapTypes.removeAt(c[3]);c[2]=false}else{b.overlayMapTypes.insertAt(c[3],c[1]);c[2]=true}}}},getPixelRatio:function(){var a=this.maps[this.api]},mousePosition:function(a){var b=this.maps[this.api];var c=document.getElementById(a);if(c!==null){google.maps.event.addListener(b,"mousemove",function(d){var e=d.latLng.lat().toFixed(4)+" / "+d.latLng.lng().toFixed(4);c.innerHTML=e});c.innerHTML="0.0000 / 0.0000"}}},LatLonPoint:{toProprietary:function(){return new google.maps.LatLng(this.lat,this.lon)},fromProprietary:function(a){this.lat=a.lat();this.lon=a.lng()}},Marker:{toProprietary:function(){var l={};var b=0;var k=0;if(this.iconAnchor){b=this.iconAnchor[0];k=this.iconAnchor[1]}var e=new google.maps.Point(b,k);if(this.iconUrl){l.icon=new google.maps.MarkerImage(this.iconUrl,new google.maps.Size(this.iconSize[0],this.iconSize[1]),new google.maps.Point(0,0),e);if(this.iconShadowUrl){if(this.iconShadowSize){var i=this.iconShadowSize[0];var h=this.iconShadowSize[1];l.shadow=new google.maps.MarkerImage(this.iconShadowUrl,new google.maps.Size(i,h),new google.maps.Point(0,0),e)}else{l.shadow=new google.maps.MarkerImage(this.iconShadowUrl)}}}if(this.draggable){l.draggable=this.draggable}if(this.labelText){l.title=this.labelText}if(this.imageMap){l.shape={coord:this.imageMap,type:"poly"}}l.position=this.location.toProprietary(this.api);l.map=this.map;var f=new google.maps.Marker(l);if(this.infoBubble){var g="click";if(this.hover){g="mouseover"}google.maps.event.addListener(f,g,function(){f.mapstraction_marker.openBubble()})}if(this.hoverIconUrl){var d=new google.maps.Size(this.iconSize[0],this.iconSize[1]);var j=new google.maps.Point(0,0);var a=new google.maps.MarkerImage(this.hoverIconUrl,d,j,e);var c=new google.maps.MarkerImage(this.iconUrl,d,j,e);google.maps.event.addListener(f,"mouseover",function(){f.setIcon(a)});google.maps.event.addListener(f,"mouseout",function(){f.setIcon(c)})}google.maps.event.addListener(f,"click",function(){f.mapstraction_marker.click.fire()});return f},openBubble:function(){var b,a=this;if(!this.hasOwnProperty("proprietary_infowindow")||this.proprietary_infowindow===null){b=new google.maps.InfoWindow({content:this.infoBubble});google.maps.event.addListener(b,"closeclick",function(c){a.closeBubble()})}else{b=this.proprietary_infowindow}this.openInfoBubble.fire({marker:this});b.open(this.map,this.proprietary_marker);this.proprietary_infowindow=b},closeBubble:function(){if(this.hasOwnProperty("proprietary_infowindow")&&this.proprietary_infowindow!==null){this.proprietary_infowindow.close();this.proprietary_infowindow=null;this.closeInfoBubble.fire({marker:this})}},hide:function(){this.proprietary_marker.setOptions({visible:false})},show:function(){this.proprietary_marker.setOptions({visible:true})},update:function(){var a=new mxn.LatLonPoint();a.fromProprietary("googlev3",this.proprietary_marker.getPosition());this.location=a}},Polyline:{toProprietary:function(){var c=[];for(var b=0,d=this.points.length;b<d;b++){c.push(this.points[b].toProprietary("googlev3"))}var a={path:c,strokeColor:this.color||"#000000",strokeOpacity:this.opacity||1,strokeWeight:this.width||3};if(this.closed){a.fillColor=this.fillColor||"#000000";a.fillOpacity=a.strokeOpacity;return new google.maps.Polygon(a)}else{return new google.maps.Polyline(a)}},show:function(){throw"Not implemented"},hide:function(){throw"Not implemented"}}});