Add mbtiles_data: "metaprotocol"

This commit is contained in:
Petr Sloup 2016-08-20 10:28:45 +02:00
parent f21ee2691b
commit 3cf8ce9903
3 changed files with 18 additions and 8 deletions

View file

@ -12,7 +12,7 @@ var utils = require('./utils');
module.exports = function(options, repo, params, id) { module.exports = function(options, repo, params, id) {
var app = express().disable('x-powered-by'); var app = express().disable('x-powered-by');
var mbtilesFile = path.join(options.paths.mbtiles, params.mbtiles); var mbtilesFile = path.resolve(options.paths.mbtiles, params.mbtiles);
var tileJSON = { var tileJSON = {
'tiles': params.domains || options.domains 'tiles': params.domains || options.domains
}; };

View file

@ -35,7 +35,7 @@ mbgl.on('message', function(e) {
} }
}); });
module.exports = function(options, repo, params, id) { module.exports = function(options, repo, params, id, dataResolver) {
var app = express().disable('x-powered-by'); var app = express().disable('x-powered-by');
var lastModified = new Date().toUTCString(); var lastModified = new Date().toUTCString();
@ -167,13 +167,21 @@ module.exports = function(options, repo, params, id) {
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.lastIndexOf('mbtiles:', 0) === 0) {
if (url.lastIndexOf('mbtiles', 0) === 0) {
// found mbtiles source, replace with info from local file // found mbtiles source, replace with info from local file
delete source.url; delete source.url;
var fromData = url.lastIndexOf('mbtiles_data:', 0) === 0;
var mbtilesFile = url.substring(
(fromData ? 'mbtiles_data://' : 'mbtiles://').length);
if (fromData) {
mbtilesFile = dataResolver(mbtilesFile);
}
console.log(mbtilesFile);
queue.push(function(callback) { queue.push(function(callback) {
var mbtilesFile = url.substring('mbtiles://'.length); mbtilesFile = path.resolve(options.paths.mbtiles, mbtilesFile);
mbtilesFile = path.join(options.paths.mbtiles, mbtilesFile);
var mbtilesFileStats = fs.statSync(mbtilesFile); var mbtilesFileStats = fs.statSync(mbtilesFile);
if (!mbtilesFileStats.isFile() || mbtilesFileStats.size == 0) { if (!mbtilesFileStats.isFile() || mbtilesFileStats.size == 0) {
throw Error('Not valid MBTiles file: ' + mbtilesFile); throw Error('Not valid MBTiles file: ' + mbtilesFile);

View file

@ -16,9 +16,11 @@ 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.lastIndexOf('mbtiles:', 0) === 0) { if (url.lastIndexOf('mbtiles', 0) === 0) {
var mbtiles = url.substring('mbtiles://'.length); var fromData = url.lastIndexOf('mbtiles_data:', 0) === 0;
var identifier = reportTiles(mbtiles); var mbtiles = url.substring(
(fromData ? 'mbtiles_data://' : 'mbtiles://').length);
var identifier = reportTiles(mbtiles, fromData);
source.url = 'local://data/' + identifier + '.json'; source.url = 'local://data/' + identifier + '.json';
} }
}); });