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) {
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 = {
'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 lastModified = new Date().toUTCString();
@ -167,13 +167,21 @@ module.exports = function(options, repo, params, id) {
Object.keys(styleJSON.sources).forEach(function(name) {
var source = styleJSON.sources[name];
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
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) {
var mbtilesFile = url.substring('mbtiles://'.length);
mbtilesFile = path.join(options.paths.mbtiles, mbtilesFile);
mbtilesFile = path.resolve(options.paths.mbtiles, mbtilesFile);
var mbtilesFileStats = fs.statSync(mbtilesFile);
if (!mbtilesFileStats.isFile() || mbtilesFileStats.size == 0) {
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) {
var source = styleJSON.sources[name];
var url = source.url;
if (url.lastIndexOf('mbtiles:', 0) === 0) {
var mbtiles = url.substring('mbtiles://'.length);
var identifier = reportTiles(mbtiles);
if (url.lastIndexOf('mbtiles', 0) === 0) {
var fromData = url.lastIndexOf('mbtiles_data:', 0) === 0;
var mbtiles = url.substring(
(fromData ? 'mbtiles_data://' : 'mbtiles://').length);
var identifier = reportTiles(mbtiles, fromData);
source.url = 'local://data/' + identifier + '.json';
}
});