无法使用Node.js进行GET / - mbtiles加载

时间:2016-06-27 11:47:17

标签: javascript node.js mbtiles

我正在尝试使用tilelive和mbtiles模块将.mbtiles文件加载到我的浏览器中。 “lon.mbtiles”是一个样本城市(伦敦)直接从mapbox的网站下载,应该可以加载,除非mapbox在他们的结尾出错。

这是我的server.js:

opacity

如果从本地文件运行,脚本将运行并检测磁贴,但我无法使localhost工作。我已经测试过(在代码中)看看我是否遇到了阻止我的localhost的防火墙问题,但是它运行得很好。

根据我的理解,这是var express = require('express'); var http = require('http'); var app = express(); var tilelive = require('tilelive'); require('mbtiles').registerProtocols(tilelive); tilelive.load('mbtiles://lon.mbtiles', function(err, source) { console.log("Server has connected"); if (err) { throw err; console.log("mbtiles file not found, please ensure the path is correct in server.js"); } app.set('port', 7777); // USED FOR CROSS-SERVER COMMS, NOT NECESSARY RIGHT NOW // app.use(function(req, res, next) { // res.header("Access-Control-Allow-Origin", "*"); // res.header("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept"); // next(); // }); // ** Test function for localhost connection, works fine with port 7777 as is stands ** // app.get("/", function(req, res) { // res.send("test"); // }); app.get(/^\/v2\/tiles\/(\d+)\/(\d+)\/(\d+).pbf$/, function(req, res){ var z = req.params[0]; var x = req.params[1]; var y = req.params[2]; console.log('get tile %d, %d, %d', z, x, y); source.getTile(z, x, y, function(err, tile, headers) { if (err) { res.status(404) res.send(err.message); //console.log(err.message); } else { res.set(headers); res.send(tile); } }); }); http.createServer(app).listen(app.get('port'), function() { console.log('Express server listening on port ' + app.get('port')); }); }); 行的问题,尽管我对NodeJS的了解并未超过2天的视频和文章。

如何让我的localhost实际连接而不是丢弃错误?

提前致谢

1 个答案:

答案 0 :(得分:0)

我不得不使用三个斜杠来加载.mbtile 试试'mbtiles:///lon.mbtiles'

我还必须安装sqlite require('sqlite3').verbose();