Skip to content


Subversion checkout URL

You can clone with
Download ZIP
Bindings to mapnik for node.js
C++ JavaScript Shell Batchfile Python PowerShell Makefile
Failed to load latest commit information.
bench Removed deps from test coverage, fixed bench that was throwing an err…
bin support dumping vector tiles to geojson + read geojson low memory
deps add latest protozero headers to deps folder
docs Move and expand
documentation Fix invalid options syntax, update documentation
lib make jshint happy [publish binary]
scripts [skip ci] update mapnik SDK for local builds
src Fix a bug associated with palettes not accepting the default rgba [re…
test Fix a bug associated with palettes not accepting the default rgba [re…
tools better c++ style as per mapnik conventions
.gitattributes [skip ci] shapefile/geojson test, revert 183d8d9
.gitignore AppVeyor: Update Windows mapnik SDK to 3.0.3
.npmignore Ignore documentation [skip ci]
.travis.yml Added more information to changelog [publish binary] Bumped changelog [republish binary] close #526 [skip ci]
LICENSE.txt update licence year
Makefile Added coveralls integration Update
appveyor.yml target Mapnik v3.0.6
binding.gyp upgrade to latest protozero/mapnik-vt@0.9.x
common.gypi Windows: Custom "ProgramDatabaseFile" to avoid naming conflict with '… let gyp control if mapnik_settings.js needs rebuilt
package.json Bump back to 0.12.0 of mapnik vector tile [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

To upgrade libstdc++ on travis (without sudo) you can do:

language: cpp

sudo: false

     - ubuntu-toolchain-r-test
     - libstdc++6 # upgrade libstdc++ on linux to support C++11


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 2015:

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

Windows specific

Windows builds are maintained in

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.