2

对不起,如果这是一个新手问题。我正在使用 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);
       });
   });
});
4

0 回答 0