Alternative query-based static endpoint
This commit is contained in:
parent
e1654a51de
commit
28790fda30
1 changed files with 28 additions and 7 deletions
|
@ -564,14 +564,11 @@ module.exports = function(options, repo, params, id, dataResolver) {
|
||||||
res, next, overlay);
|
res, next, overlay);
|
||||||
});
|
});
|
||||||
|
|
||||||
var boundsPattern =
|
var serveBounds = function(req, res, next) {
|
||||||
util.format(':minx(%s),:miny(%s),:maxx(%s),:maxy(%s)',
|
|
||||||
FLOAT_PATTERN, FLOAT_PATTERN, FLOAT_PATTERN, FLOAT_PATTERN);
|
|
||||||
|
|
||||||
app.get(util.format(staticPattern, boundsPattern), function(req, res, next) {
|
|
||||||
var raw = req.params.raw;
|
var raw = req.params.raw;
|
||||||
var bbox = [+req.params.minx, +req.params.miny,
|
var bbox = [+req.params.minx, +req.params.miny,
|
||||||
+req.params.maxx, +req.params.maxy];
|
+req.params.maxx, +req.params.maxy];
|
||||||
|
var center = [(bbox[0] + bbox[2]) / 2, (bbox[1] + bbox[3]) / 2];
|
||||||
|
|
||||||
var transformer = raw ?
|
var transformer = raw ?
|
||||||
mercator.inverse.bind(mercator) : dataProjWGStoInternalWGS;
|
mercator.inverse.bind(mercator) : dataProjWGStoInternalWGS;
|
||||||
|
@ -583,6 +580,7 @@ module.exports = function(options, repo, params, id, dataResolver) {
|
||||||
bbox[1] = minCorner[1];
|
bbox[1] = minCorner[1];
|
||||||
bbox[2] = maxCorner[0];
|
bbox[2] = maxCorner[0];
|
||||||
bbox[3] = maxCorner[1];
|
bbox[3] = maxCorner[1];
|
||||||
|
center = transformer(center);
|
||||||
}
|
}
|
||||||
|
|
||||||
var w = req.params.width | 0,
|
var w = req.params.width | 0,
|
||||||
|
@ -591,8 +589,8 @@ module.exports = function(options, repo, params, id, dataResolver) {
|
||||||
format = req.params.format;
|
format = req.params.format;
|
||||||
|
|
||||||
var z = calcZForBBox(bbox, w, h, req.query),
|
var z = calcZForBBox(bbox, w, h, req.query),
|
||||||
x = (bbox[0] + bbox[2]) / 2,
|
x = center[0],
|
||||||
y = (bbox[1] + bbox[3]) / 2,
|
y = center[1],
|
||||||
bearing = 0,
|
bearing = 0,
|
||||||
pitch = 0;
|
pitch = 0;
|
||||||
|
|
||||||
|
@ -601,6 +599,29 @@ module.exports = function(options, repo, params, id, dataResolver) {
|
||||||
path, req.query);
|
path, req.query);
|
||||||
return respondImage(z, x, y, bearing, pitch, w, h, scale, format,
|
return respondImage(z, x, y, bearing, pitch, w, h, scale, format,
|
||||||
res, next, overlay);
|
res, next, overlay);
|
||||||
|
};
|
||||||
|
|
||||||
|
var boundsPattern =
|
||||||
|
util.format(':minx(%s),:miny(%s),:maxx(%s),:maxy(%s)',
|
||||||
|
FLOAT_PATTERN, FLOAT_PATTERN, FLOAT_PATTERN, FLOAT_PATTERN);
|
||||||
|
|
||||||
|
app.get(util.format(staticPattern, boundsPattern), serveBounds);
|
||||||
|
|
||||||
|
app.get('/static/', function(req, res, next) {
|
||||||
|
for (var key in req.query) {
|
||||||
|
req.query[key.toLowerCase()] = req.query[key];
|
||||||
|
}
|
||||||
|
req.params.raw = true;
|
||||||
|
req.params.format = (req.query.format || 'image/png').split('/').pop();
|
||||||
|
var bbox = (req.query.bbox || '').split(',');
|
||||||
|
req.params.minx = bbox[0];
|
||||||
|
req.params.miny = bbox[1];
|
||||||
|
req.params.maxx = bbox[2];
|
||||||
|
req.params.maxy = bbox[3];
|
||||||
|
req.params.width = req.query.width || '256';
|
||||||
|
req.params.height = req.query.height || '256';
|
||||||
|
|
||||||
|
return serveBounds(req, res, next);
|
||||||
});
|
});
|
||||||
|
|
||||||
var autoPattern = 'auto';
|
var autoPattern = 'auto';
|
||||||
|
|
Loading…
Reference in a new issue