Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/378.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/33.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用节点Mapnik+创建矢量分幅;PostGIS(500(内部服务器错误))_Javascript_Node.js_Google Maps Api 3_Postgis_Mapnik - Fatal编程技术网

Javascript 使用节点Mapnik+创建矢量分幅;PostGIS(500(内部服务器错误))

Javascript 使用节点Mapnik+创建矢量分幅;PostGIS(500(内部服务器错误)),javascript,node.js,google-maps-api-3,postgis,mapnik,Javascript,Node.js,Google Maps Api 3,Postgis,Mapnik,我正在尝试在谷歌地图中创建带有矢量图块的网络地图。我正在使用: mapnik node.js node mapnik postGIS 我使用端口8000(127.0.0.1:8000)显示地图磁贴 var mapTiles = { tilejson: '1.0.0', scheme: 'xyz', tiles: ['127.0.0.1:8000/{z}/{x}/{y}.png'], formatter: function(options, data) { retu

我正在尝试在谷歌地图中创建带有矢量图块的网络地图。我正在使用:

  • mapnik
  • node.js
  • node mapnik
  • postGIS
  • 我使用端口8000(127.0.0.1:8000)显示地图磁贴

    var mapTiles = {
        tilejson: '1.0.0',
        scheme: 'xyz',
        tiles: ['127.0.0.1:8000/{z}/{x}/{y}.png'],
        formatter: function(options, data) { return data.NAME }
    };
    
    我有
    server.js
    ,这个文件我用来创建服务器

        http.createServer(function(req, res) {
      parseXYZ(req, TMS_SCHEME, function(err,params) {
        if (err) {
          res.writeHead(500, {'Content-Type': 'text/plain'});
          res.end(err.message);
        } else {
          try {
            var map = new mapnik.Map(256, 256, mercator.proj4);
            var layer = new mapnik.Layer('tile', mercator.proj4);
            var postgis = new mapnik.Datasource(postgis_settings); // settings defined above
            var bbox = mercator.xyz_to_envelope(parseInt(params.x),
                                                   parseInt(params.y),
                                                   parseInt(params.z), false); // coordinates provided by the sphericalmercator.js script
            layer.datasource = postgis; 
            layer.styles = ['polygon']; // this pertains the the style in the xml doc
            map.bufferSize = 0; // how much edging is provided for each tile rendered
            map.load(path.join(__dirname, 'tile_symbols.xml'), {strict: true}, function(err,map) {
                if (err) throw err;
                map.add_layer(layer);
                map.extent = bbox;
                var im = new mapnik.Image(map.width, map.height);
                map.render(im, function(err, im) {
                  if (err) {
                    throw err;
                  } else {
                    res.writeHead(200, {'Content-Type': 'image/png'});
                    res.end(im.encodeSync('png'));
                  }
                }); 
            });
    
          }
          catch (err) {
            res.writeHead(500, {'Content-Type': 'text/plain'});
            res.end(err.message);
          }
        }
      });
    }).listen(port);
    
    之后,我启动服务
    >node server.js
    我收到成功消息
    服务器在端口8000上运行
    。然后,我尝试检查我的代码工作与否,发现了一些问题:

  • 我尝试访问127.0.0.1:8000,我得到了
    没有提供的x,y,z
  • 如果我访问
    index.html
    文件(
    http://localhost/webmaps/
    ),即 多边形没有出现在地图中,我得到
    500(内部服务器错误)
    -
    无法为类型创建数据源:“postgis”(没有成功注册数据源插件目录)

  • 有人能帮我解决这个问题吗?或者,如果有人有其他方法在谷歌地图中为海量数据制作矢量图块,这将非常有用。

    看起来您需要将postgis注册为插件。查看github上注册数据源行的
    节点mapnik
    中的示例代码。有没有发现@Adi?是的,@Adi,运气好吗?我只是问了一个问题