# The restored optimal road trip maps
These are the interactive maps from the "optimal road trip" projects that Randal S. Olson published between 2015 and 2018. They were restored in 2026 and work again.
The site is served with GitHub Pages at . Every map keeps its original URL, so old links, blog embeds and bookmarks land on a working page. Start at [`index.html`](index.html), which lists every map.
## Why the maps broke
The original pages drew each route live in the browser by calling the Google Maps JavaScript API's Directions service, without an API key. Google later required a key and a billing account for every request. From then on each request came back `REQUEST_DENIED`, and the pages showed an empty map with no route.
## How they were restored
Nothing here calls Google or any other outside service. Each page loads only files from this repository.
1. The ordered stop list was parsed out of each original page. Every stop was re-verified against Wikidata, Wikipedia, the National Park Service and OpenStreetMap, and given a coordinate for the landmark itself and a separate "drive point" where a car can actually arrive (a parking lot, a visitor center or a ferry terminal). The stops and their order are exactly as originally published. Nothing was re-optimized.
2. Each leg was routed on [OpenStreetMap](https://www.openstreetmap.org/) road data with [OSRM](https://project-osrm.org/) (car profile for road trips, foot profile for the walking tours), using a pinned OSM snapshot recorded in each page's `trip.json`. Legs that cannot be driven, such as the flights in the South America trip, are drawn as dashed straight lines labeled "flight or ferry". Where a stop's drive point is more than about 1 km from the landmark (Santorini is reached from the port of Piraeus, the Statue of Liberty from the Battery), a dotted line joins them, and the stop's popup says how it is reached.
3. The basemap is a [Protomaps](https://protomaps.com/) vector tile extract in a single PMTiles file, drawn with [MapLibre GL JS](https://maplibre.org/). The lower 48 states go down to zoom 8 (a 51 MB file) and the world basemap, used where no regional extract covers a route, to zoom 5. You can zoom in further; the route line stays sharp because it is vector data, but the basemap shows less detail past those levels. Fonts and map icons are served from this repository too.
4. Every map offers GPX, KML and GeoJSON files, plus links that open the route in Google Maps or Apple Maps. Those links split long routes into parts, because both apps take only a limited number of stops per link.
Distances and driving times are recomputed on today's road data, so they can differ from the figures quoted in the original posts.
### Embedding a map
Add `?embed=1` to any map URL for a map-only view with a small title card, suitable for an iframe. Scrolling over an embedded map scrolls the page: hold Ctrl (or Cmd) while scrolling to zoom the map, and use two fingers to move it on a touch screen.
## What is in this repository
| Path | Contents |
|---|---|
| `index.html` | List of every restored map |
| `