I am trying to create web tiles with vector tiles on a google map. I use:
mapniknode.jsnode-mapnikpostGIS
I use port 8000 (127.0.0.1:8000) to display a tile map
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, I use this file to create a 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);
var bbox = mercator.xyz_to_envelope(parseInt(params.x),
parseInt(params.y),
parseInt(params.z), false);
layer.datasource = postgis;
layer.styles = ['polygon'];
map.bufferSize = 0;
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 started the service > node server.js, receiving a success message server running on port 8000. Then I try to check if my code works or not, and I found some problems:
- I try to access 127.0.0.1:8000, I get
no x,y,z provided - If I access the file
index.html( http://localhost/webmaps/), the polygon does not appear on the map, and I get 500 (Internal Server Error)-Could not create datasource for type: 'postgis' (no datasource plugin directories have been successfully registered)
- ? - Google, .