oxjs/source/Ox.UI/js/Map/Ox.MapImage.js
2011-05-16 12:49:48 +02:00

74 lines
2.3 KiB
JavaScript

// vim: et:ts=4:sw=4:sts=4:ft=js
/*@
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)
places <a|o|[]> array of either names (''), points ([0, 0]),
or objects ({name, point, highlight})
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 = new Ox.Element('<img>', self)
.defaults({
height: 360,
markerColorHighlight: 'yellow',
markerColorNormal: 'blue',
places: [],
type: 'satellite',
width: 640
})
.options(options || {})
$.extend(self, {
markers: {
highlight: [],
normal: []
},
src: 'http://maps.google.com/maps/api/staticmap?sensor=false' +
'&size=' + self.options.width + 'x' + self.options.height +
'&maptype=' + self.options.type
});
if (self.options.places.length) {
self.options.places.forEach(function(place) {
if (Ox.isString(place)) {
self.markers.normal.push(place);
} else if (Ox.isArray(place)) {
self.markers.normal.push(place.join(','));
} else {
self.markers[place.highlight ? 'highlight' : 'normal']
.push('point' in place ? place.point.join(',') : place.name)
}
});
Ox.forEach(self.markers, function(markers, k) {
if (markers.length) {
self.src += '&markers=icon:' + 'http://dev.pan.do:8000' +
Ox.UI.PATH + 'png/marker' +
Ox.toTitleCase(self.options['markerColor' + Ox.toTitleCase(k)]) +
'.png|' + markers.join('|')
}
});
} else {
self.src += '&center=0,0&zoom=2'
}
that.attr({
src: self.src
});
self.setOption = function(key, value) {
};
return that;
};