Skip to content


Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
A JavaScript mapping library for the National Park Service, built as a Leaflet plugin.
JavaScript HTML CSS
branch: master


latest commit 49e98aff57
@nateirwin nateirwin authored

NPS Arrowhead


Extends Leaflet to include functionality and a look-and-feel built specifically for the National Park Service.

This library is under very active development, so please help test and report issues.


You may also want to take a look at the NPMap Builder. It is a graphical interface that walks through building a map with NPMap.js.


Heavily inspired (cough cough) by Mapbox.js, and, of course, built on the great Leaflet library. Standing on the shoulders of giants. Also, many thanks to the authors of all the great plugins used in/by the library (take a look at for a list).


NPMap.js is versioned using semantic versioining. This means that releases are numbered: major.minor.patch and follow these guidelines:

  • Breaking backward compatibility bumps the major (and resets the minor and patch to zero)
  • New additions that don't break backward compatibility bumps the minor (and resets the patch to zero)
  • Bug fixes and miscellaneous changes bumps the patch

2.0.0 is the first official NPMap.js version. All versions < 2.0.0 are part of the original NPMap JavaScript library, which has now been deprecated.


Hosted Version

NPMap.js is hosted on the National Park Service's content delivery network. Feel free to load the library directly from there. You can access hosted versions at You should replace "major.minor.patch" with the number of the version you want to access (e.g. 2.0.0).

You can pull in a recent copy of the master branch from This should not, however, be used in production maps, as this branch is under active development and may be unstable at times.


You must have node.js installed to run the build. After installing node.js:

git clone
cd npmap.js
npm install

Install the Grunt command line tool (do this once as an admin user after installing node.js):

npm install -g grunt-cli

Copy secrets.sample.json to a file called secrets.json for development and testing:

cp secrets.sample.json secrets.json

Then use Grunt to build the library:

grunt build

Internally, the Grunt task uses browserify to combine dependencies. It is installed locally, along with other required packages, when you run npm install. The build task also uses uglify and cssmin to create minified versions in dist/.


NPMap.js uses the Mocha JavaScript test framework, with the expect.js assertion library, and PhantomJS to run the tests. You can run the tests with either of the following commands:

grunt test


npm test

We are working to expand test coverage for the library.


Take a look at


Simple and targeted examples reside in the examples directory. This is a great starting point if you haven't used NPMap.js before.


You can get in touch with the NPMap team by contacting us via Twitter (@npmap) or email ( We are happy to help with any questions, and feedback is welcome as well!

Code Status

Build Status Dependencies Dev Dependencies Built with Grunt

Something went wrong with that request. Please try again.