ADD dynamic maps generation support

This commit is contained in:
Niklas Hösl 2017-10-12 09:17:34 +02:00
parent 61eef1518e
commit 11322bf916
2 changed files with 37 additions and 1 deletions

View file

@ -16,7 +16,10 @@ module.exports = function(options, repo, params, id, reportTiles, reportFont) {
Object.keys(styleJSON.sources).forEach(function(name) { Object.keys(styleJSON.sources).forEach(function(name) {
var source = styleJSON.sources[name]; var source = styleJSON.sources[name];
var url = source.url; var url = source.url;
if (url && url.lastIndexOf('mbtiles:', 0) === 0) {
var validateUrl = source.validate_url !=undefined ? source.validate_url : true
if (url && url.lastIndexOf('mbtiles:', 0) === 0 && validateUrl) {
var mbtilesFile = url.substring('mbtiles://'.length); var mbtilesFile = url.substring('mbtiles://'.length);
var fromData = mbtilesFile[0] == '{' && var fromData = mbtilesFile[0] == '{' &&
mbtilesFile[mbtilesFile.length - 1] == '}'; mbtilesFile[mbtilesFile.length - 1] == '}';
@ -63,7 +66,22 @@ module.exports = function(options, repo, params, id, reportTiles, reportFont) {
repo[id] = styleJSON; repo[id] = styleJSON;
app.get('/' + id + '/style.json', function(req, res, next) { app.get('/' + id + '/style.json', function(req, res, next) {
var pattern = req.query.pattern
var value = req.query.value
console.log("## Pattern: "+pattern)
console.log("## Value: "+value)
var fixUrl = function(url, opt_nokey, opt_nostyle) { var fixUrl = function(url, opt_nokey, opt_nostyle) {
console.log("## Before if "+pattern)
if(pattern != null){
console.log("## Enter replace for "+url)
url = url.replace(pattern, value)
console.log("## Url: "+url)
}
if (!url || (typeof url !== 'string') || url.indexOf('local://') !== 0) { if (!url || (typeof url !== 'string') || url.indexOf('local://') !== 0) {
return url; return url;
} }
@ -78,6 +96,7 @@ module.exports = function(options, repo, params, id, reportTiles, reportFont) {
if (queryParams.length) { if (queryParams.length) {
query = '?' + queryParams.join('&'); query = '?' + queryParams.join('&');
} }
return url.replace( return url.replace(
'local://', req.protocol + '://' + req.headers.host + '/') + query; 'local://', req.protocol + '://' + req.headers.host + '/') + query;
}; };
@ -86,6 +105,7 @@ module.exports = function(options, repo, params, id, reportTiles, reportFont) {
Object.keys(styleJSON_.sources).forEach(function(name) { Object.keys(styleJSON_.sources).forEach(function(name) {
var source = styleJSON_.sources[name]; var source = styleJSON_.sources[name];
source.url = fixUrl(source.url); source.url = fixUrl(source.url);
console.log("final url: "+source.url)
}); });
// mapbox-gl-js viewer cannot handle sprite urls with query // mapbox-gl-js viewer cannot handle sprite urls with query
if (styleJSON_.sprite) { if (styleJSON_.sprite) {
@ -94,6 +114,8 @@ module.exports = function(options, repo, params, id, reportTiles, reportFont) {
if (styleJSON_.glyphs) { if (styleJSON_.glyphs) {
styleJSON_.glyphs = fixUrl(styleJSON_.glyphs, false, true); styleJSON_.glyphs = fixUrl(styleJSON_.glyphs, false, true);
} }
return res.send(styleJSON_); return res.send(styleJSON_);
}); });

View file

@ -185,6 +185,20 @@ function start(opts) {
); );
}); });
app.get('/new-user', function(req, res){
var userId = req.query.id;
var id = "heatmap-"+userId;
var item = {
mbtiles: "heatmap-"+userId+".mbtiles"
}
serve_data(options, serving.data, item, id, serving.styles).then(function(sub) {
console.log("# serve data")
app.use('/data/', sub);
res.send("ok")
});
});
app.get('/styles.json', function(req, res, next) { app.get('/styles.json', function(req, res, next) {
var result = []; var result = [];
var query = req.query.key ? ('?key=' + req.query.key) : ''; var query = req.query.key ? ('?key=' + req.query.key) : '';