A long weekend of downtown food, state-park trails, and small-town main streets.
The whole integration
// One embed. Days ride in the stop list; the host never rebuilds the URL.
const map = Wander.map('#map', {
mapId: '5b40717c-…',
stops: [ // visit order, day per stop
{ poiId: '31d0358a-…', day: 1 },
{ poiId: 'e3ea831f-…', day: 2 },
{ poiId: '45fbf0d2-…', day: 3 }
],
route: 'full', routeType: 'driving', showNumbers: true
});
// The embed reports the itinerary it actually loaded — build tabs from that
// rather than assuming your CMS and the map agree.
map.on('itineraryChanged', ({ maxDay, days }) => renderDayTabs(days));
// Days change inside the embed too (its own chip strip), so mirror the
// event instead of only tracking your own clicks.
map.on('dayChanged', ({ day }) => markActiveTab(day));
map.on('poiSelected', ({ poiId }) => highlightStop(poiId));
dayTab.onclick = () => map.setActiveDay(day); // null = every day
stopCard.onclick = () => map.flyTo({ poiId, zoom: 15 }); // camera only