81 lines
2.4 KiB
JavaScript
81 lines
2.4 KiB
JavaScript
// vim: et:ts=4:sw=4:sts=4:ft=javascript
|
|
|
|
'use strict';
|
|
|
|
/*@
|
|
Ox.MapImage <f:Ox.Element> MapImage Object
|
|
() -> <f> MapImage Object
|
|
(options) -> <f> MapImage Object
|
|
(options, self) -> <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
|
|
@*/
|
|
|
|
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), 2);
|
|
}).join('')
|
|
}
|
|
|
|
self.setOption = function(key, value) {
|
|
|
|
};
|
|
|
|
return that;
|
|
|
|
};
|