Version 2 of Maps on a Stick: Technical Details


3 min read

Today we start closed beta testing of Maps on a Stick v.2, an application for making interactive maps and visualizations offline. This version is thoroughly rethought to make the application more flexible and efficient. For example,

  • No more complex deployment process. Users can easily copy single-file SQLite tilesets to Maps on a Stick for viewing.
  • Adding online KML is as simple as inputting the address of the KML file and clicking ‘Add.’
  • Uploading KML consists of clicking ‘Upload KML’ and uploading it.

With this release, the simplicity and flexibility of Maps on a Stick have increased tremendously, as a result of improvements to the underlying infrastructure.

fae2a638ed70  0rKRhgz1SlNayqi T

The first version of Maps on a Stick revealed a few important principles of portable, cross-platform applications:

  • Distributing tilesets as massive collections of files is disadvantageous due to the inefficiency of filesystems, especially those that serve as the lowest common denominator for USB sticks, like FAT32.
  • Distributing pure HTML and Javascript revealed the serious and hard limitations of that approach. Cross-domain KML was not supported, and even loading files from the local disk is not supported in Google Chrome because of security restrictions.

Version Two

  • Maps on a Stick v2 is written in Python like TileMill and SlingshotSMS, which allows it to sidestep the problems of version one. It includes a built-in proxy so that online KML can be added at the click of a button, and it scans the Maps directory for new tilesets so that adding new tiles to your installation is as simple as dragging a new tileset onto the drive.
  • SQLite tilesets are faster and less error-prone than filesystem-based tilesets, and with the new format Maps on a Stick can automatically zoom to the extent of an added set. This makes, for example, switching from a map of Afghanistan to a map of Haiti and back a smooth experience.
  • There’s a graphical launcher for Maps on a Stick that’s written in Lua with löve as a GUI toolkit.
  • The web interface is polished and simplified but maintains all of the niceties of version one.


Maps on a Stick now includes a graphical launcher for Mac OS X. The launcher is easily repurposed for other applications and we see this project as an interesting perspective on developing cross-platform ‘desktop web’ software. Unlike the server itself, the launcher consists of Lua code in the löve game framework.

Opening up the code

Maps on a Stick is an open source application licensed under BSD. The code includes documentation on the entire build process, which is captured in code, so that new applications can be built from the same strategy. This recent round of development has been done in partnership with the National Democratic Institute’s team in Afghanistan. Eric and Robert will be on the ground next week in Kabul doing trainings to help NDI’s partners use the key maps we made for Afghanistan Election Data to help analyze September’s Wolesi Jirga elections and to asses what new maps are needed.

Email us at [email protected] if you’re interested in joining this beta test. This will be a small group, so please share details about your intended usage and experience.

What we're doing.