首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法使用Node.js加载/- mbtiles

无法使用Node.js加载/- mbtiles
EN

Stack Overflow用户
提问于 2016-06-27 11:47:17
回答 1查看 669关注 0票数 0

我试图使用tilelive和mbtiles模块将一个.mbtiles文件加载到浏览器中。"lon.mbtiles“是一个示例城市(伦敦),直接从mapbox的网站下载,并且应该是可下载的,除非mapbox在其端出现错误。

这是我的server.js:

代码语言:javascript
复制
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天的视频和文章。

如何才能使本地主机真正连接而不抛出错误?

提前感谢

EN

回答 1

Stack Overflow用户

发布于 2016-11-13 20:57:04

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

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38053158

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档