node package manager



Nodetiles-core is a javascript library for rendering map tiles suitable for slippy-maps and static images. Features include:

  • Flexible Data-connectors: We offer GeoJson and Shapefile connectors out-of-the-box, but it's easy to build your own.
  • Map Projections: Transform data between more 3,900+ EPSG projections using Proj4.js
  • CartoCSS Support: We support many (if not most) stylesheet features of CartCSS making it trivial to import your map styles from tools like Tilemill
  • Slippy-map URL helpers: Easily serve map tiles, UTFGrids, and Tile.json. Check out nodetiles-init for a simple scaffold.
  • Static maps: If slipply-maps aren't your style, generate static images of any dimension; checkout nodetiles-example-static for examples.
  • Joyfully simple, pluggable, flexible, powerful: We built Nodetiles to be easily understandable, extensible and a joy to use. It's built with Javascript and tries to provide a solid foundation of tools that are still easy to understand, extend or replace depending on your needs. File an issue if Nodetiles can't do what you need.


Nodetiles Screenshot


/* Set up the libraries */
var nodetiles = require('nodetiles-core'),
    GeoJsonSource = nodetiles.datasources.GeoJson,
    Projector = nodetiles.projector,
    fs = require('fs'); // we'll output to a file
/* Create your map context */
var map = new nodetiles.Map({
    projection: "EPSG:4326" // set the projection of the map
/* Add some data */
map.addData(new GeoJsonSource({ 
  name: "world",
  path: __dirname + '/countries.geojson', 
  projection: "EPSG:900913"
/* Link your Carto stylesheet */
/* Render out the map to a file */
  // Make sure your bounds are in the same projection as the map
  bounds: {minX: -180, minY: -90, maxX: 180, maxY: 90},
  width: 800,   // number of pixels to output
  height: 400,
  callback: function(err, canvas) {
    var file = fs.createWriteStream(__dirname + '/map.png'),
        stream = canvas.createPNGStream();
    stream.on('data', function(chunk){
    stream.on('end', function(){
      console.log('Saved map.png!');


Big THANKS to Tom Carden whose original gist inspired this project. He also has other very useful projects.


Supported projections


Copyright (c) 2012-2013 Code for America. See LICENSE for details.