Mapnik将带有数据源的地图渲染为空矢量图块

时间:2016-08-10 19:59:08

标签: mapnik vector-tiles

抱歉,如果这是一个新手问题。我使用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);
       });
   });
});

0 个答案:

没有答案