'use strict'; /*@ Ox.MapImage <f> MapImage Object options <o> Options object height <n|360> image height (px) place <o|null> Object with south, west, north and east properties type <s|satellite> map type ('hybrid', 'roadmap', 'satellite', 'terrain') width <n|640> image width (px) self <o> shared private variable ([options[, self]]) -> <o:Ox.Element> MapImage Object @*/ Ox.MapImage = function(options, self) { var self = self || {}, that = Ox.Element('<img>', 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; };