// your Mapbox access token mapboxgl.accessToken = 'pk.eyJ1IjoiY2FiYmJ5eSIsImEiOiJjbWRpYzY1MGgwYzA5Mm1xM25udDUzbGtpIn0.RX6zv4VI6r2vpj7IWidz0w'; // mobile stuffs const isMobile = window.innerWidth <= 600; const mobileMaxPx = Math.floor(window.innerWidth * 0.65); const desktopMax = '240px'; // Colors const Config = { colors: { place: '#FF0000', // red event: '#FF8DA1', // pink food: '#000080', // navy blue default: '#000000' // fallback black } }; // 1. Initialize the map const map = new mapboxgl.Map({ container: 'map', // ID of the
in index.html projection: 'globe', style: 'mapbox://styles/mapbox/streets-v12', center: [-122.3194, 37.7849], // SF [lng, lat] zoom: 11, attributionControl: false // completely removes the attribution control }); map.addControl(new mapboxgl.NavigationControl()); // Nav controls // 2. Total Pins const header = document.getElementById('legend-header'); header.textContent = `Total pins: ${pins.length}`; // 3. Loop through your pins array and add markers+popups pins.forEach(pin => { const [latStr, lngStr] = pin.loc.split(',').map(s => s.trim()); const lat = parseFloat(latStr); const lng = parseFloat(lngStr); // offset is how far the popup appears above/below the pin const popup = new mapboxgl.Popup({ offset: { // when the popup is above the marker, push it up by 25px (nice spacing) top: [0, 10], // when it’s below the marker, only push it down by 8px (tighter) bottom: [0, -40], // for the corners 'top-left': [15, 25], 'top-right': [-15, 25], 'bottom-left': [25, 20], 'bottom-right': [-25, 20] }, // close button is intuitive closeButton: false, // mobile stuffs maxWidth: isMobile ? `${mobileMaxPx}px` // ~85% of the true device width : '240px' // your normal desktop width }).setHTML(` ${pin.title}

${pin.title}

${pin.caption}

`); new mapboxgl.Marker({ scale: 0.75, color: Config.colors[pin.category] || Config.colors.default }) .setLngLat([lng, lat]) .setPopup(popup) .addTo(map); }); // 4 To show big picture. const overlay = document.getElementById('overlay'); const overlayImg = document.getElementById('overlay-img'); document.addEventListener('click', e => { // if user clicked *inside* a popup on its if (e.target.matches('.mapboxgl-popup-content img')) { overlayImg.src = e.target.src; // copy the clicked image overlay.classList.add('show'); // show the overlay } }); overlay.addEventListener('click', e => { if (e.target === overlay) { overlay.classList.remove('show'); } });