function printFromBbox(req, res, next){ // bbox is [w,s,e,n] boundaries for rectangle var params = {}; params.zoom = req.params.z | 0; params.bbox = [req.params.w, req.params.s, req.params.e, req.params.n]; params.scale = (req.params.scale) ? parseFloat(req.params.scale) : undefined; params.scale = params.scale > 9 ? 8 : params.scale; params.format = (req.params.format !== 'png') ? req.params.format : 'png'; params.quality = req.params.quality | 0 || null; params.limit = 20000; var filename = req.style.data.name + '-z' + params.zoom + '_' + req.params.w + '_' + req.params.s + '_' + req.params.e + '_' + req.params.n + '_' + (req.params.scale | 0); var source = req.params.format === 'vector.pbf' ? req.style._backend._source : req.style; params.getTile = source.getTile.bind(source); printer(params, function(err, image, header){ if (err) return next(err); _(header).each(function(v, k) { res.set(k, v); }); res.set({'Content-disposition': 'attachment; filename=' + filename+ '.' + params.format}); return res.send(image); }); }
var processStaticMap = function(areaParams, req, res, next) { var scale = getScale(req.params.scale), format = req.params.format, params = { zoom: req.params.z | 0, scale: scale, bbox: areaParams.bbox, center: areaParams.center, format: format, getTile: function(z, x, y, callback) { return getTile(z, x, y, scale, format, function(err, data, headers) { if (!err && data == null) { err = new Error("Not found"); err.status = 404; } callback(err, data, headers); }); } }; return abaculus(params, function(err, data, headers) { if (err && !err.status) { return next(err); } res.set(headers); res.status((err && err.status) || 200); return res.send((err && err.message) || data); }); };
function printFromCenter(req, res, next){ // x & y are lng,lat at the center of the map var params = {}; params.zoom = req.params.z | 0; params.center = { x: parseFloat(req.params.x), y: parseFloat(req.params.y), w: req.params.px | 0, h: req.params.py | 0 }; params.scale = (req.params.scale) ? parseFloat(req.params.scale) : undefined; params.scale = params.scale > 9 ? 8 : params.scale; params.format = (req.params.format !== 'png') ? req.params.format : 'png'; params.quality = req.params.quality | 0 || null; params.limit = 20000; var filename = req.style.data.name + '-z' + params.zoom + '_' + req.params.x + '_' + req.params.y + '_' + (req.params.scale | 0); var source = req.params.format === 'vector.pbf' ? req.style._backend._source : req.style; params.getTile = source.getTile.bind(source); printer(params, function(err, image, header){ if (err) return next(err); _(header).each(function(v, k) { res.set(k, v); }); res.set({'Content-disposition': 'attachment; filename=' + filename + '.'+params.format}); return res.send(image); }); }
return source(id, function(err, s) { if (err) return callback(err); var style = s.style; var params = { zoom: s.data.center[2], scale: 2, center: { x: s.data.center[0], y: s.data.center[1], w: 256, h: 256 }, getTile: style.getTile.bind(style) }; abaculus(params, function(err, buffer) { if (err) return callback(err); callback(null, buffer); // Save the thumb to disk. fs.writeFile(dest, buffer, function(err) { if (err && err.code !== 'ENOENT') console.error(err); }); }); });