Weather

Global Storms
Loading active storms worldwide…
'; return; } var itemsHtml = storms.map(function(s){ return ( '' + '' + '' + escapeHtml(s.name) + '' + '' + escapeHtml(s.location) + '' + '' + s.windMph + ' mph' + '' + escapeHtml(s.catAbbr) + '' + '' ); }).join(''); // Duplicate the sequence so the scrolling loop is seamless at -50% translateX. viewport.innerHTML = '
' + itemsHtml + itemsHtml + '
'; } function renderError(){ viewport.innerHTML = '
Live storm ticker unavailable right now — check ' + 'nhc.noaa.gov or ' + 'gdacs.org directly.
'; } function load(){ fetch(FEED_URL, { cache: 'no-store' }) .then(function(r){ if (!r.ok) throw new Error('bad status'); return r.json(); }) .then(function(data){ var features = (data && data.features) || []; var storms = features .filter(function(f){ var p = f.properties || {}; return p.eventtype === 'TC' && String(p.iscurrent) === 'true'; }) .map(function(f){ var p = f.properties; var lon = f.geometry && f.geometry.coordinates ? f.geometry.coordinates[0] : 0; var lat = f.geometry && f.geometry.coordinates ? f.geometry.coordinates[1] : 0; var kmh = p.severitydata && p.severitydata.severity ? p.severitydata.severity : 0; var mph = Math.round(kmh * 0.621371); var cat = categoryFor(mph); var location = p.country && p.country.trim() ? p.country.trim() : basinFromCoords(lon, lat); return { id: p.eventid, name: cleanName(p.eventname), location: location, windMph: mph, color: cat.color, catAbbr: cat.abbr, catLabel: cat.label, reportUrl: (p.url && p.url.report) || 'https://www.gdacs.org/' }; }) .sort(function(a, b){ return b.windMph - a.windMph; }); render(storms); updatedEl.textContent = 'Updated ' + fmtAgo(new Date()); }) .catch(function(){ renderError(); updatedEl.textContent = ''; }); } load(); setInterval(load, REFRESH_MS); })();
☀️ Marco Island & Naples Weather Today
Your quick Southwest Florida outdoor forecast
Loading today's weather...
${weatherIcon(code)}
${high}° / ${low}°
💧 ${rain}%
${weatherText(code)}
`; } return html; } async function fetchWeather(loc) { const params = new URLSearchParams({ latitude: loc.lat, longitude: loc.lon, timezone: "America/New_York", temperature_unit: "fahrenheit", wind_speed_unit: "mph", forecast_days: "7", current: "temperature_2m,apparent_temperature,weather_code,wind_speed_10m,wind_direction_10m", hourly: "temperature_2m,apparent_temperature,precipitation_probability,weather_code,wind_speed_10m", daily: "weather_code,temperature_2m_max,temperature_2m_min,apparent_temperature_max,precipitation_probability_max,wind_speed_10m_max,wind_direction_10m_dominant" }); const url = "https://api.open-meteo.com/v1/forecast?" + params.toString(); const response = await fetch(url); if (!response.ok) { throw new Error("Weather request failed"); } return response.json(); } async function loadWeather() { try { const [marco, naples] = await Promise.all([ fetchWeather(locations.marco), fetchWeather(locations.naples) ]); const marcoHigh = Math.round(marco.daily.temperature_2m_max[0]); const naplesHigh = Math.round(naples.daily.temperature_2m_max[0]); const rainChance = Math.max( marco.daily.precipitation_probability_max[0] || 0, naples.daily.precipitation_probability_max[0] || 0 ); const heat = Math.round( Math.max( marco.daily.apparent_temperature_max[0], naples.daily.apparent_temperature_max[0] ) ); const windSpeed = Math.round( Math.max( marco.daily.wind_speed_10m_max[0], naples.daily.wind_speed_10m_max[0] ) ); const windDirection = cardinal( marco.daily.wind_direction_10m_dominant[0] ); const morning = getHours(marco, 6, 12); const afternoon = getHours(marco, 12, 18); const tonight = getHours(marco, 18, 24); const daylight = getHours(marco, 6, 20); const now = new Date(); const updateText = now.toLocaleTimeString( "en-US", { hour: "numeric", minute: "2-digit" } ); document.getElementById( "minn-weather-content" ).innerHTML = `
Marco Island
${marcoHigh}°F
Naples
${naplesHigh}°F
Rain Chances
☔ ${rainChance}%
Heat
🌡️ ${heat}°F
💨 Winds: ${windDirection} up to ${windSpeed} mph
🌅 Morning
${summarizePeriod(morning)}
☀️ Afternoon
${summarizePeriod(afternoon)}
🌙 Tonight
${summarizePeriod(tonight)}
⭐ Best Outdoor Window: ${bestOutdoorWindow(daylight)}
📅 Marco Island & Naples 7-Day Outlook
${buildSevenDay(marco, naples)}
Updated ${updateText} • Forecast data: Open-Meteo
`; } catch(error) { document.getElementById( "minn-weather-content" ).innerHTML = `
Weather information is temporarily unavailable.
`; console.error(error); } } loadWeather(); /* automatically refresh every 30 minutes */ setInterval(loadWeather, 1800000); })();

Marco Island — Live Weather Map

Rain, wind, temperature and satellite — updates automatically, no refresh needed

Naples & Marco Island — Live Lightning Map

Naples & Marco Island — Live Lightning Map

Community-network lightning strikes in real time, from Blitzortung.org — refreshes continuously while open.

Strike age (how recent)

White — just now (0–20 min ago)
Yellow — 20–40 min ago
Orange — 40–60 min ago
Red — 60–80 min ago
Purple — 80–100 min ago
Dark purple — 100–120 min ago
Source: lightning positions come from Blitzortung.org, a free, volunteer-run detection network (also powers LightningMaps.org) — no API key or account involved. The map itself is interactive: pan, zoom, and scroll freely.

Important — this is not a safety tool. Blitzortung's own network explicitly says its data is for informational/entertainment purposes and should not be relied on to protect people or property. Strike detections can lag real time by a minute or more and coverage density varies by region. For actual lightning safety decisions, use official National Weather Service warnings — the standard guidance is "when thunder roars, go indoors," regardless of what any map shows.