Try it right here
This loads the live project from its own domain, exactly as a visitor would see it.
Location and compass need a phone on site. Add ?sim=1 to the address to tap the map and move your position from anywhere.
What it does
A mobile walking guide to the Elkhorn Ranch site in Theodore Roosevelt National Park. A live map and compass lead visitors to each of the eight National Park Service tour stops along the path, and arriving at a stop opens its story in the words of Roosevelt and his ranch partner Bill Sewall.
There is no cell service at the ranch, so the guide is built to be saved before the drive: the app, photos, an aerial image, and topo tiles for both the trail and the road in. It explains the location and compass prompts before the phone asks, walks visitors through fixing blocked permissions on every common browser, and notices when a phone is only sharing approximate location.
What it can do
- GPS arrival detection that scales with fix accuracy, with vibration on arrival
- Compass on Android and iPhone, with a GPS-course fallback while walking
- Full offline mode through a service worker: about 3 MB plus topo tiles
- Plain-language permission screen before any browser prompt, plus per-browser recovery steps
- Detects approximate-location mode and stops auto-opening stories
- Points to the trailhead and offers directions when the visitor is still far away
- Staff preview mode with
?sim=1to walk the route from anywhere
Make it your own
Start by forking the repository into your own organization. Everything below assumes you are working in your fork, not this one.
- Fork the repo and replace every word of copy in
data/stops.json: the approach note, the stops, quotations, and credits. Keep a source list likedocs/fact-check.md. - Replace the stop coordinates and route line, and the aerial image in
map/. NAIP imagery from USGS is public domain for any U.S. site. - Adjust the arrival radius and the far-away distance in
app.jsfor your trail. - Update the offline tile ranges and the cache list in
sw.js, then bump the cache version. - Enable Pages from
mainat the root, editCNAME, and replace the icons andmanifest.webmanifestwith your own.
Stuck on a step? Open an issue on the repository. Questions from people adapting these for their own institution are the most useful feedback we get.