'use strict'; /*@ Ox.MapImage MapImage Object options Options object height image height (px) place Object with south, west, north and east properties type map type ('hybrid', 'roadmap', 'satellite', 'terrain') width image width (px) self shared private variable ([options[, self]]) -> MapImage Object @*/ Ox.MapImage = function(options, self) { var self = self || {}, that = Ox.Element('', self) .defaults({ backgroundColor: [0, 0, 0, 0], borderColor: [0, 0, 0, 0], borderWidth: 0, height: 640, markers: [], place: null, type: 'satellite', width: 640 }) .options(options || {}); self.src = document.location.protocol + '//maps.google.com/maps/api/staticmap?sensor=false' + '&size=' + self.options.width + 'x' + self.options.height + '&maptype=' + self.options.type; if (self.options.place) { self.src += '&path=fillcolor:' + formatColor(self.options.backgroundColor) + '|color:0x' + formatColor(self.options.borderColor) + '|weight:' + self.options.borderWidth + '|' + [ ['south', 'west'], ['north', 'west'], ['north', 'east'], ['south', 'east'], ['south', 'west'] ].map(function(keys) { return [ self.options.place[keys[0]], self.options.place[keys[1]] ].join(','); }).join('|'); } else { self.src += '¢er=0,0&zoom=2' } if (self.options.markers.length) { self.src += '&markers=' + self.options.markers.map(function(marker) { return [marker.lat, marker.lng].join(',') }).join('|'); } that.attr({ src: self.src }); function formatColor(color) { return color.map(function(c) { return Ox.pad(c.toString(16), 'left', 2, '0'); }).join('') } return that; };