If you want to use node-mapnik
to render tiles in an async fashion for highest performance, you've come to the right place: you need a map pool. This is because you must ensure that when you call map.render
no other threads are using that map
instance. When you call an async function like map.render
Node.js is creating a thread behind the scene.
npm install --save mapnik-pool
mapnik-pool
is a peerDependency
of node-mapnik
: you bring your own Mapnik version, as long as its ~1.0.0
.
var mapnik = require('mapnik'),
mapnikPool = require('mapnik-pool')(mapnik),
fs = require('fs');
var pool = mapnikPool.fromString(fs.readFileSync('mymap.xml', 'utf8'));
pool.acquire(function(err, map) {
// pooled map
});
fromString(str, initOptions, mapOptions)
str
: a Mapnik XML stringinitOptions
: options for initialization. Currently, size
for map, bufferSize
. Default { size: 256 }
mapOptions
: options for the fromString
method.