if (typeof window.contentMaps === 'undefined') { window.contentMaps = {}; window.initialMapBounds = {}; } if (typeof window.bounds === 'undefined') {window.bounds = {};} if (typeof window.markerData === 'undefined') {window.markerData = {};} if (!markerData[1]) {markerData[1] = {};} function initMapbox_1(){ mapboxgl.accessToken = 'pk.eyJ1IjoibGF6eXRyaXBzIiwiYSI6ImNsaTJ4anh2MTA5NDYzZW85ODJmMm45ZzcifQ.9u5pN47V7SsoFwF6_Pw5bQ'; const contentMap_1 = new mapboxgl.Map({ container: 'contentMap_1', style: 'mapbox://styles/mapbox/streets-v11', center: [-98.95719711451751, 36.13390479914074], zoom: 5, cooperativeGestures: true }); window.contentMaps[1] = contentMap_1; if (typeof window.bounds[1] === 'undefined') {window.bounds[1] = new mapboxgl.LngLatBounds();} const contentStart_1_1 = [-92.23356465885642, 34.75562765917045]; const contentStart_1_1_geoson = { 'type': 'FeatureCollection', 'features': [{ 'type': 'Feature', 'geometry': { 'type': 'Point', 'coordinates': contentStart_1_1 }, 'properties': { 'title': 'Start', 'description': 'Start point' } }] }; for (const feature of contentStart_1_1_geoson.features) { const el = document.createElement('div'); el.className = 'marker_start'; new mapboxgl.Marker(el, {offset: [0, -29]}).setLngLat(feature.geometry.coordinates).addTo(contentMap_1); } window.bounds[1].extend(contentStart_1_1); const contentFinish_1_2 = [-104.99967726257897, 39.77099137277978]; const contentFinish_1_2_geoson = { 'type': 'FeatureCollection', 'features': [{ 'type': 'Feature', 'geometry': { 'type': 'Point', 'coordinates': contentFinish_1_2 }, 'properties': { 'title': 'Finish', 'description': 'Finish point' } }] }; for (const feature of contentFinish_1_2_geoson.features) { const el = document.createElement('div'); el.className = 'marker_star'; new mapboxgl.Marker(el, {offset: [0, -29]}).setLngLat(feature.geometry.coordinates).addTo(contentMap_1); } window.bounds[1].extend(contentFinish_1_2); async function getRoute_1_0(start, finish, via) { const url = `https://api.mapbox.com/directions/v5/mapbox/driving/${start.join(',')};${via}${finish.join(',')}?alternatives=true&geometries=geojson&language=en&overview=full&steps=true&access_token=${mapboxgl.accessToken}`; const response = await fetch(url); const json = await response.json(); const data = json.routes[0]; const route = data.geometry.coordinates; const geojson = { type: 'Feature', properties: {}, geometry: { type: 'LineString', coordinates: route } }; for (const coord of route) { window.bounds[1].extend(coord); contentMap_1.fitBounds(window.bounds[1], {padding: {top: 60, bottom:60, left: 60, right: 60}}); } if (contentMap_1.getSource('route1_0')) { contentMap_1.getSource('route1_0').setData(geojson); } else { contentMap_1.addLayer({ id: 'route1_0', type: 'line', source: { type: 'geojson', data: geojson }, layout: { 'line-join': 'round', 'line-cap': 'round' }, paint: { 'line-color': '#0b7192', 'line-width': 5, 'line-opacity': 0.80 } }); } } const start_1_0 = [-92.233564658856, 34.75562765917]; const finish_1_0 = [-104.99967726258, 39.77099137278]; const via_1_0 = '-97.55094718915,35.510341916244;-100.03385721363,37.732081645678;-101.00065403732,38.009603279298;-104.6920600914,38.251576238383;-104.84586867699,38.852992142666;'; contentMap_1.on('load', async () => { await getRoute_1_0(start_1_0, finish_1_0, via_1_0); }); contentMap_1.fitBounds(window.bounds[1], {padding: {top: 60, bottom: 60, left: 60, right: 60}}); initialMapBounds[1] = new mapboxgl.LngLatBounds(window.bounds[1].getSouthWest(), window.bounds[1].getNorthEast()); const visibleMapRoutes_1 = []; contentMaps[1].on('click', (e) => { if (!clickWasOnMarkerOrCard) { resetMarkersAndCards(1); } else { clickWasOnMarkerOrCard = false; } }); const markerConfig = { 'finish': { className: 'marker_finish', size: [58, 58], offset: [0, -29], span: false, best: false, text: false, }, 'start': { className: 'marker_start', size: [58, 58], offset: [0, -29], span: false, best: false, text: false, }, 'star': { className: 'marker_star', size: [58, 58], offset: [0, -29], span: false, best: false, text: false, }, 'numbered': { className: 'mapMarkerNum', size: false, offset: [0, 0], span: true, best: true, text: false, }, 'star-plain': { className: 'mapMarkerNum markerSpanRed', size: false, offset: [0, 0], span: true, best: false, text: '☆', }, }; function addMarkersToMap(mapNum) { Object.values(markerData[mapNum]).forEach((iconData, mapIconNum) => { var el = document.createElement('div'); var mC = markerConfig[iconData.type] || markerConfig.star; el.className = mC.className; if (mC.span) { var t = ''; if (mC.best) { t = iconData.best; } else if (mC.text) { t = mC.text; } el.innerHTML = '
' + t + '
'; } if (mC.width && mC.height) { el.style.width = mC.width + 'px'; el.style.height = mC.height + 'px'; } var marker = new mapboxgl.Marker(el, {offset: mC.offset}) .setLngLat(iconData.lonLat) .addTo(window.contentMaps[mapNum]); marker.markerType = iconData.iconType; iconData.marker = marker; window.bounds[mapNum].extend(iconData.lonLat); if (iconData.onClick) { marker.getElement().addEventListener('click', function() { toggleMapIconClick(mapNum, mapIconNum); }); } }); } addMarkersToMap(1); contentMap_1.fitBounds(window.bounds[1], {padding: {top: 60, bottom:60, left: 60, right: 60}}); } var mapScriptCreated = 0; var mapCssCreated = 0; var mapScriptLoaded = 0; var mapCssLoaded = 0; var mapLoadList = []; function showLazyMap(fname) { if (mapScriptLoaded == 1 && mapCssLoaded == 1) { if (!mapLoadList.includes(fname)) { window[fname](); mapLoadList.push(fname); } } } (function fn() { var pics = document.querySelectorAll('.no-js-hide'); pics.forEach(function(pic) { pic.classList.toggle('no-js-hide'); }); var lazyImages = [].slice.call(document.querySelectorAll(".lazeeload")); if ("IntersectionObserver" in window) { const config = { root: null, rootMargin: '1000px', threshold: 0 }; let lazyImageObserver = new IntersectionObserver(function(entries, observer) { entries.forEach(function(entry) { if (entry.isIntersecting) { let lazyImage = entry.target; if (lazyImage.dataset.src) {lazyImage.src = lazyImage.dataset.src;} if (lazyImage.dataset.srcset) {lazyImage.srcset = lazyImage.dataset.srcset;} if (lazyImage.dataset.map) { const fname = "initMapbox_"+lazyImage.dataset.map; if (mapScriptLoaded == 0) { let script = document.createElement('script'); script.async=true; script.defer=true; script.src = "https://api.mapbox.com/mapbox-gl-js/v3.0.0/mapbox-gl.js"; script.onload = function(){ mapScriptLoaded = 1; showLazyMap(fname); } document.head.appendChild(script); mapScriptCreated = 1; let css = document.createElement('link'); css.rel = "stylesheet"; css.href = "https://api.mapbox.com/mapbox-gl-js/v3.0.0/mapbox-gl.css"; css.onload = function(){ mapCssLoaded = 1; showLazyMap(fname); } document.head.appendChild(css); mapCssCreated = 1; } else { if (typeof window[fname] === 'function') { window[fname](); } showLazyMap(fname); } } lazyImage.classList.remove("no-js-hide"); lazyImage.classList.remove("lazeeload"); lazyImageObserver.unobserve(lazyImage); } }); }, config); lazyImages.forEach(function(lazyImage) { lazyImageObserver.observe(lazyImage); lazyImage.classList.add("lazeeload-activated"); }); } else { let active = false; const lazyLoad = function() { if (active === false) { active = true; setTimeout(function() { lazyImages.forEach(function(lazyImage) { if ((lazyImage.getBoundingClientRect().top <= window.innerHeight+1000 && lazyImage.getBoundingClientRect().bottom >= 0) && getComputedStyle(lazyImage).display !== "none") { if (lazyImage.dataset.src) lazyImage.src = lazyImage.dataset.src; if (lazyImage.dataset.srcset) lazyImage.srcset = lazyImage.dataset.srcset; if (lazyImage.dataset.onload) lazyImage.onload = lazyImage.dataset.onload; lazyImage.classList.remove("lazeeload"); lazyImages = lazyImages.filter(function(image) { return image !== lazyImage; }); if (lazyImages.length === 0) { document.removeEventListener("scroll", lazyLoad); window.removeEventListener("resize", lazyLoad); window.removeEventListener("orientationchange", lazyLoad); } } }); active = false; }, 200); } }; document.addEventListener("scroll", lazyLoad); window.addEventListener("resize", lazyLoad); window.addEventListener("orientationchange", lazyLoad); } var lazyImages = [].slice.call(document.querySelectorAll(".lazeeload")); i=1; lazyImages.forEach(function(lazyImage) { if (!(lazyImage.classList.contains("lazeeload-activated"))) { if (lazyImage.dataset.src) lazyImage.src = lazyImage.dataset.src; if (lazyImage.dataset.srcset) lazyImage.srcset = lazyImage.dataset.srcset; lazyImage.classList.remove("lazeeload"); } }); })();