Skip to content


Subversion checkout URL

You can clone with
Download ZIP
Bindings to mapnik for node.js
C++ JavaScript Shell Python PowerShell Batchfile Makefile
Failed to load latest commit information.
bench more debug output for abort benchmarks
bin mapnik-render: use strict map loading
deps/clipper update to latest clipper
docs Move and expand
documentation Fix invalid options syntax, update documentation
lib switch to spawn
scripts try non-lto osx SDK - refs #435
src ignore -Wshadow from v8/nan
test expect 0 difference for jpeg's on windows - refs mapbox/windows-build…
tools better c++ style as per mapnik conventions
.gitignore update ignores
.npmignore Ignore documentation [skip ci]
.travis.yml [republish binary] ugprade to mapnik-vector-tile@0.8.4 [republish binary] Move and expand
LICENSE.txt update licence year
Makefile Added coveralls integration [skip ci] update ReadMe about Windows
appveyor.yml ditch windows node v11.x builds [republish binary]
binding.gyp make target "vector_tile" compile on Windows
common.gypi Windows: Custom "ProgramDatabaseFile" to avoid naming conflict with '… let gyp control if mapnik_settings.js needs rebuilt
package.json Updated package to version 3.4 [republish binary]
vcbuild.bat use new mapnik-sdk


Bindings to Mapnik for node.


Build Status Build status Coverage Status


Render a map from a stylesheet:

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

// register fonts and datasource plugins

var map = new mapnik.Map(256, 256);
map.load('./test/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');

Convert a jpeg image to a png:

var mapnik = require('mapnik');

Convert a shapefile to GeoJSON:

var mapnik = require('mapnik');
var ds = new mapnik.Datasource({type:'shape',file:'test/data/world_merc.shp'});
var featureset = ds.featureset()
var geojson = {
  "type": "FeatureCollection",
  "features": [
var feat =;
while (feat) {
    feat =;

For more sample code see the tests and sample code.


  • Node v0.10.x or v0.12.x (v0.12.x support requires node-mapnik >= v3.1.6)
  • C++11 compatible C++ runtime library


If you hit an error like:

Error: /usr/lib/x86_64-linux-gnu/ version `GLIBCXX_3.4.18' not found

This means your Linux distributions libstdc++ library is too old (for example you are running Ubuntu Precise rather than Trusty). To work around this upgrade libstdc++:

sudo add-apt-repository -y ppa:ubuntu-toolchain-r/test
sudo apt-get update -q
sudo apt-get install -y libstdc++6


Just do:

npm install mapnik@3.x

Note: This will install the latest node-mapnik 3.x series, which is recommended. There is also an 1.x series which maintains API compatibility with Mapnik 2.3.x and 2.2.x and a v0.7.x series which is not recommended unless you need to support Mapnik 2.1 or older.

By default, binaries are provided for:

On those platforms no external dependencies are needed.

Other platforms will fall back to a source compile: see Source Build for details.

Binaries started being provided at node-mapnik >= 1.4.2 for OSX and Linux and at 1.4.8 for Windows.

Windows specific

NOTE: Windows binaries for the 3.x series require the Visual C++ Redistributable Packages for Visual Studio 2014 CTP4:

Attention: Installing a more recent vcredist than 2014 CTP4 will remove any other 2014/2015 CTP vcredists in the background and render the provided binaries non functional! This should not happen after a final Version of VS2015 is available.

See for more details.

The 1.x series require the Visual C++ Redistributable Packages for Visual Studio 2013:

Source Build

To build from source you need:

  • Mapnik >= v3.x
  • Protobuf >= 2.3.0 (protoc and libprotobuf-lite)

Install Mapnik using the instructions at:

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

Then run:

npm install mapnik --build-from-source

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


To run the tests do:

npm test


BSD, see LICENSE.txt

Something went wrong with that request. Please try again.