UNESCO World Heritage Site Travel Planner

UNESCO World Heritage Site Travel Planner

Discover and plan your journey to the world's most precious places.

1. Filter Sites

2. Your Itinerary

Click "Add to Itinerary" on the map to build your trip.

Your itinerary is empty.

'; return; } itinerary.forEach((site, index) => { const item = document.createElement('div'); item.className = 'p-2 border-b flex justify-between items-center'; item.innerHTML = `${index + 1}. ${site.name}`; itineraryList.appendChild(item); }); } map.on('popupopen', (e) => { const addBtn = e.popup._container.querySelector('.add-to-itinerary-btn'); addBtn.addEventListener('click', () => { const siteId = parseInt(addBtn.dataset.id); if (!itinerary.some(site => site.id === siteId)) { const site = sitesDB.find(s => s.id === siteId); itinerary.push(site); renderItinerary(); } e.target.closePopup(); }); }); itineraryList.addEventListener('click', (e) => { if (e.target.classList.contains('remove-btn')) { const siteId = parseInt(e.target.dataset.id); itinerary = itinerary.filter(site => site.id !== siteId); renderItinerary(); } }); function generatePdf() { if (itinerary.length === 0) { alert("Please add sites to your itinerary before downloading."); return; } const { jsPDF } = jspdf; const pdf = new jsPDF(); pdf.setFontSize(22); pdf.text('Your UNESCO Travel Itinerary', 105, 20, { align: 'center' }); let y = 35; itinerary.forEach((site, index) => { if (y > 260) { pdf.addPage(); y = 20; } pdf.setFontSize(16); pdf.setTextColor(0, 51, 102); pdf.text(`${index + 1}. ${site.name}`, 15, y); y += 7; pdf.setFontSize(11); pdf.setTextColor(50, 50, 50); pdf.text(`- Best Time to Visit: ${site.visit}`, 20, y); y += 6; pdf.text(`- Pro Tip: ${site.tip}`, 20, y); y += 10; }); pdf.save('unesco-itinerary.pdf'); } allFilters.forEach(el => el.addEventListener('change', renderSites)); document.getElementById('pdf-download-btn').addEventListener('click', generatePdf); renderSites(); renderItinerary(); });
Scroll to Top