diff --git a/src/serve_data.js b/src/serve_data.js index 5c51cde..b34c310 100644 --- a/src/serve_data.js +++ b/src/serve_data.js @@ -18,7 +18,7 @@ try { var utils = require('./utils'); -module.exports = function(options, repo, params, id, styles) { +module.exports = function(options, repo, params, id, styles, publicUrl) { var app = express().disable('x-powered-by'); var mbtilesFile = path.resolve(options.paths.mbtiles, params.mbtiles); @@ -170,7 +170,7 @@ module.exports = function(options, repo, params, id, styles) { app.get('/' + id + '.json', function(req, res, next) { var info = clone(tileJSON); info.tiles = utils.getTileUrls(req, info.tiles, - 'data/' + id, info.format, { + 'data/' + id, info.format, publicUrl, { 'pbf': options.pbfAlias }); return res.send(info); diff --git a/src/serve_rendered.js b/src/serve_rendered.js index 10ef459..7deaf6b 100644 --- a/src/serve_rendered.js +++ b/src/serve_rendered.js @@ -97,7 +97,7 @@ function createEmptyResponse(format, color, callback) { }); } -module.exports = function(options, repo, params, id, dataResolver) { +module.exports = function(options, repo, params, id, publicUrl, dataResolver) { var app = express().disable('x-powered-by'); var maxScaleFactor = Math.min(Math.floor(options.maxScaleFactor || 3), 9); @@ -736,7 +736,7 @@ module.exports = function(options, repo, params, id, dataResolver) { app.get('/' + id + '.json', function(req, res, next) { var info = clone(tileJSON); info.tiles = utils.getTileUrls(req, info.tiles, - 'styles/' + id, info.format); + 'styles/' + id, info.format, publicUrl); return res.send(info); }); diff --git a/src/server.js b/src/server.js index c9414d1..fbef899 100644 --- a/src/server.js +++ b/src/server.js @@ -145,7 +145,7 @@ function start(opts) { if (item.serve_rendered !== false) { if (serve_rendered) { startupPromises.push( - serve_rendered(options, serving.rendered, item, id, + serve_rendered(options, serving.rendered, item, id, opts.publicUrl, function(mbtiles) { var mbtilesFile; Object.keys(data).forEach(function(id) { @@ -179,7 +179,7 @@ function start(opts) { } startupPromises.push( - serve_data(options, serving.data, item, id, serving.styles).then(function(sub) { + serve_data(options, serving.data, item, id, serving.styles, opts.publicUrl).then(function(sub) { app.use('/data/', sub); }) ); @@ -210,7 +210,7 @@ function start(opts) { } else { path = type + '/' + id; } - info.tiles = utils.getTileUrls(req, info.tiles, path, info.format, { + info.tiles = utils.getTileUrls(req, info.tiles, path, info.format, opts.publicUrl, { 'pbf': options.pbfAlias }); arr.push(info); @@ -299,7 +299,7 @@ function start(opts) { var tiles = utils.getTileUrls( req, style.serving_rendered.tiles, - 'styles/' + id, style.serving_rendered.format); + 'styles/' + id, style.serving_rendered.format, opts.publicUrl); style.xyz_link = tiles[0]; } }); @@ -327,7 +327,7 @@ function start(opts) { 'data/' + id + '.json' + query) + '/wmts'; var tiles = utils.getTileUrls( - req, data_.tiles, 'data/' + id, data_.format, { + req, data_.tiles, 'data/' + id, data_.format, opts.publicUrl, { 'pbf': options.pbfAlias }); data_.xyz_link = tiles[0]; diff --git a/src/utils.js b/src/utils.js index 1f1f90d..8cf6636 100644 --- a/src/utils.js +++ b/src/utils.js @@ -11,7 +11,7 @@ module.exports.getPublicUrl = function(publicUrl, req) { return publicUrl || (req.protocol + '://' + req.headers.host + '/') } -module.exports.getTileUrls = function(req, domains, path, format, aliases) { +module.exports.getTileUrls = function(req, domains, path, format, publicUrl, aliases) { if (domains) { if (domains.constructor === String && domains.length > 0) { @@ -54,10 +54,14 @@ module.exports.getTileUrls = function(req, domains, path, format, aliases) { } var uris = []; - domains.forEach(function(domain) { - uris.push(req.protocol + '://' + domain + '/' + path + - '/{z}/{x}/{y}.' + format + query); - }); + if (!publicUrl) { + domains.forEach(function(domain) { + uris.push(req.protocol + '://' + domain + '/' + path + + '/{z}/{x}/{y}.' + format + query); + }); + } else { + uris.push(publicUrl + path + '/{z}/{x}/{y}.' + format + query) + } return uris; };