Skip to content
This repository

Bindings to mapnik for node.js

Fetching latest commit…

Cannot retrieve the latest commit at this time


Bindings to Mapnik for node.


Render a map synchronously:

var mapnik = require('mapnik');

var map = new mapnik.Map(256, 256);

Render a map asynchronously:

var mapnik = require('mapnik');
var fs = require('fs');

var map = new mapnik.Map(256, 256);
map.load('./examples/stylesheet.xml', function(err,map) {
    if (err) throw err;
    var im = new mapnik.Image(256, 256);
    map.render(im, function(err,im) {
      if (err) throw err;
      im.encode('png', function(err,buffer) {
          if (err) throw err;
          fs.writeFile('map.png',buffer, function(err) {
              if (err) throw err;
              console.log('saved map image to map.png');

Note: to run these examples locally first do:

export NODE_PATH=./lib:${NODE_PATH}

For more sample code see 'examples/'


  • Node v0.6 or v0.8
  • Mapnik 2.x

Mapnik 2.1.0 is targeted, but 2.0.x is also supported. This means that if you are running the Mapnik 2.0.x series some minor test failures are expected:

  • 6-7 test failures are expected using Mapnik 2.0.0
  • 4-5 test failures are expected using Mapnik 2.0.2
  • 0 test failures are expected using Mapnik 2.1.0-pre


First install Mapnik - for more details see:

Confirm that the mapnik-config program is available and on your $PATH.

To install node-mapnik locally for development or testing do:

git clone git://
cd node-mapnik

Or set NODE_PATH to test importing:

export NODE_PATH=./lib
node -e "require.resolve('mapnik')"

Or you can also install via npm

npm install mapnik

The above will install node-mapnik locally in a node_modules folder. To install globally do:

npm install -g mapnik

Quick rendering test

To see if things are working try rendering a world map with the sample data

From the source checkout root do:

export NODE_PATH=./lib
node ./examples/simple/render.js ./examples/stylesheet.xml map.png

Using node-mapnik from your node app

To require node-mapnik as a dependency of another package put in your package.json:

"dependencies"  : { "mapnik":"*" } // replace * with a given semver version string


See the 'examples/' for more usage examples.

For some of the examples you will need:

npm install generic-pool
npm install get


To run the tests do:

npm test

Or you can manually install mocha and then just do:

make test


BSD, see LICENSE.txt

Something went wrong with that request. Please try again.