I'm trying to create web maps with vector-tile in google map. I'm using :
mapnik
node.js
node-mapnik
postGIS
i use port 8000 (127.0.0.1:8000) to appear the map-tile
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 }
};
And i have server.js
, this file i use to create server.
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);
After that i start the service > node server.js
i get success message server running on port 8000
. Then i'm trying to check my code work or not, and i found some problem :
- I try to access 127.0.0.1:8000 i get
no x,y,z provided
- if i access the
index.html
file (http://localhost/webmaps/
), the polygon doesn't appear in map and i get500 (Internal Server Error)
-Could not create datasource for type: 'postgis' (no datasource plugin directories have been successfully registered)
Could someone help me to fix this problem ? or if someone have another way to make vector-tile for huge data in google maps, it would be very helpful.