【发布时间】:2016-06-27 11:47:17
【问题描述】:
我正在尝试使用 tilelive 和 mbtiles 模块将 .mbtiles 文件加载到我的浏览器中。 “lon.mbtiles”是直接从 mapbox 网站下载的示例城市(伦敦),应该可以加载,除非 mapbox 最终出错。
这是我的 server.js:
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'));
});
});
如果从本地文件运行,脚本会运行并检测磁贴,但我无法让本地主机工作。我已经(在代码中)进行了测试,看看我是否有防火墙问题阻止了我的本地主机,但它工作得很好。
据我了解,app.get 行有问题,尽管我对 NodeJS 的了解并没有超过 2 天的视频和文章。
我怎样才能让我的本地主机真正连接而不抛出错误?
提前致谢
【问题讨论】:
-
“我怎样才能让我的本地主机真正连接而不抛出错误?” - 请具体说明:究竟是什么样的错误?究竟是什么错误信息?
-
@Jay Gould 你能解决这个问题吗?我正在启动并运行快速服务器,但是当我尝试连接时,我的本地主机会给出与您相同的
Cannot GET /错误。
标签: javascript node.js mbtiles