对不起,如果这是一个新手问题。我正在使用 node-mapnik 从数据库查询中生成矢量切片,但是矢量切片总是返回空,而我很确定 postgis 实际上返回数据(在 psql 上单独测试了查询,具有相同的边界框)。
下面的代码中是否有明显的缺失?我没有向渲染为矢量切片的地图图层添加样式,因为我认为矢量切片实际上并没有在服务器上“渲染”,这是问题吗?感谢您的回答,
pgMapRouter.get('/:z/:x/:y.pbf', function(req, res) {
var bbox = mercator.bbox(
+req.params.x,
+req.params.y,
+req.params.z,
false,
'4326'
);
var map = new mapnik.Map(256, 256);
map.extent = bbox;
var layer = new mapnik.Layer('fixture_layer');
layer.datasource = new mapnik.Datasource({
type: 'postgis',
dbname: 'citydb',
table: 'test2',
user: 'postgres',
password: 'postgres',
host: 'localhost',
port:5432,
geometry_field: 'wkb_geometry',
srid:4326,
extent: bbox
});
map.add_layer(layer);
var vtile = new mapnik.VectorTile(+req.params.z, +req.params.x, +req.params.y);
map.render(vtile, function (err, vtile) {
if (err) console.log(err);
res.setHeader('Content-Encoding', 'deflate');
res.setHeader('Content-Type', 'application/x-protobuf');
zlib.deflate(vtile.getData(), function(err, pbf) {
console.log(mapnik.VectorTile.info(pbf))
res.send(pbf);
});
});
});