|
|
|
@ -140,7 +140,7 @@ NamedMapsController.prototype.staticMap = function(req, res) {
|
|
|
|
|
function prepareImageOptions(err, _namedMapProvider) {
|
|
|
|
|
assert.ifError(err);
|
|
|
|
|
namedMapProvider = _namedMapProvider;
|
|
|
|
|
self.getStaticImageOptions(cdbUser, namedMapProvider, this);
|
|
|
|
|
self.getStaticImageOptions(cdbUser, req.params, namedMapProvider, this);
|
|
|
|
|
},
|
|
|
|
|
function getImage(err, imageOpts) {
|
|
|
|
|
assert.ifError(err);
|
|
|
|
@ -192,9 +192,37 @@ var DEFAULT_ZOOM_CENTER = {
|
|
|
|
|
}
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
NamedMapsController.prototype.getStaticImageOptions = function(cdbUser, namedMapProvider, callback) {
|
|
|
|
|
function numMapper(n) {
|
|
|
|
|
return +n;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
NamedMapsController.prototype.getStaticImageOptions = function(cdbUser, params, namedMapProvider, callback) {
|
|
|
|
|
var self = this;
|
|
|
|
|
|
|
|
|
|
if ([params.zoom, params.lon, params.lat].map(numMapper).every(Number.isFinite)) {
|
|
|
|
|
return callback(null, {
|
|
|
|
|
zoom: params.zoom,
|
|
|
|
|
center: {
|
|
|
|
|
lng: params.lon,
|
|
|
|
|
lat: params.lat
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (params.bbox) {
|
|
|
|
|
var bbox = params.bbox.split(',').map(numMapper);
|
|
|
|
|
if (bbox.length === 4 && bbox.every(Number.isFinite)) {
|
|
|
|
|
return callback(null, {
|
|
|
|
|
bounds: {
|
|
|
|
|
west: bbox[0],
|
|
|
|
|
south: bbox[1],
|
|
|
|
|
east: bbox[2],
|
|
|
|
|
north: bbox[3]
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
step(
|
|
|
|
|
function getTemplate() {
|
|
|
|
|
namedMapProvider.getTemplate(this);
|
|
|
|
@ -205,6 +233,9 @@ NamedMapsController.prototype.getStaticImageOptions = function(cdbUser, namedMap
|
|
|
|
|
if (template.view) {
|
|
|
|
|
var zoomCenter = templateZoomCenter(template.view);
|
|
|
|
|
if (zoomCenter) {
|
|
|
|
|
if (Number.isFinite(+params.zoom)) {
|
|
|
|
|
zoomCenter.zoom = +params.zoom;
|
|
|
|
|
}
|
|
|
|
|
return zoomCenter;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|