// Get current position in coordinates ~ latitude and longitude
navigator.geolocation.getCurrentPosition((position) => {
// console.log(position.coords.latitude, position.coords.longitude);
getCurrentLocation(position.coords.latitude, position.coords.longitude);
});
// fetch weather data according to current position
function getCurrentLocation(lat, lon) {
const url = `https://api.open-meteo.com/v1/forecast?latitude=${lat}&longitude=${lon}&hourly=temperature_2m,relativehumidity_2m,dewpoint_2m,apparent_temperature,precipitation_probability,precipitation,rain,showers,snowfall,snow_depth,weathercode,pressure_msl,surface_pressure,cloudcover,cloudcover_low,cloudcover_mid,cloudcover_high,visibility,evapotranspiration,et0_fao_evapotranspiration,vapor_pressure_deficit,windspeed_10m,winddirection_10m,windgusts_10m,soil_temperature_0cm,soil_moisture_0_1cm,uv_index,is_day,cape,freezinglevel_height&daily=weathercode,temperature_2m_max,temperature_2m_min,apparent_temperature_max,apparent_temperature_min,sunrise,sunset,uv_index_max,precipitation_sum,rain_sum,showers_sum,snowfall_sum,precipitation_hours,precipitation_probability_max,windspeed_10m_max,windgusts_10m_max,winddirection_10m_dominant,shortwave_radiation_sum,et0_fao_evapotranspiration&timezone=Europe%2FBerlin`;
fetch(url)
.then((response) => {
return response.json();
})
.then((data) => {
console.log(data);
const rawData = data; // smider al dataen ind i variablen rawData
dataConversion(rawData); // kalder dataConversion funktionen med rawData
})
.catch((error) => {
console.error(error);
});
}
// convert data to readable format
function dataConversion(data) { // indsat 'data' som parameter, så vi ved hvad der passeres videre til denne funktion
const rawData = data;
// kalder funktioner til at håndtere data (udtrække fra api'en)
makeTempData(rawData);
makeWeatherTypeData(rawData);
makeWindSpeedData(rawData);
makeSunData(rawData);
makeDayData(rawData);
makeWeekData(rawData);
}
// extract and sort info to array tempData
function makeTempData(rawData) {
const temp = rawData.hourly.temperature_2m;
const humidity = rawData.hourly.relativehumidity_2m;
//loop through the temp and humidity arrays and push them into tempData
for (let i = 0; i < temp.length; i++) {
const temperature = temp[i];
const relativeHumidity = humidity[i];
// Create an object to store temperature and humidity data
const dataPoint = {
temperature: temperature,
humidity: relativeHumidity
};
// Push the dataPoint object into the tempData array
tempData.push(dataPoint);
}
console.log('Temperatur og Luftfugtighed', tempData);
}
function makeWeatherTypeData(rawData) {
const weatherCode = rawData.hourly.weathercode;
for (let i = 0; i < weatherCode.length; i++) {
const weatherType = weatherCode[i];
const dataPoint = {
weatherType: weatherType
};
weatherTypeData.push(dataPoint);
}
console.log('Vejrtype',weatherTypeData);
// Global variables tempData = []; weatherTypeData = []; windData = []; sunData = []; dayData = []; weekData = [];
// Get current position in coordinates ~ latitude and longitude navigator.geolocation.getCurrentPosition((position) => { // console.log(position.coords.latitude, position.coords.longitude); getCurrentLocation(position.coords.latitude, position.coords.longitude); });
// fetch weather data according to current position function getCurrentLocation(lat, lon) {
}
// convert data to readable format function dataConversion(data) { // indsat 'data' som parameter, så vi ved hvad der passeres videre til denne funktion const rawData = data;
}
// extract and sort info to array tempData function makeTempData(rawData) { const temp = rawData.hourly.temperature_2m; const humidity = rawData.hourly.relativehumidity_2m;
}
function makeWeatherTypeData(rawData) { const weatherCode = rawData.hourly.weathercode;
}
function makeWindSpeedData(rawData) { const windSpeed = rawData.hourly.windspeed_10m; const windDirection = rawData.hourly.winddirection_10m;
}
function makeSunData(rawData) { const sunRise = rawData.daily.sunrise; const sunSet = rawData.daily.sunset;
}
function makeDayData(rawData) { const temperature = rawData.hourly.temperature_2m; const weathercode = rawData.hourly.weathercode; const cloudcover = rawData.hourly.cloudcover; const visibility = rawData.hourly.visibility; const rain = rawData.hourly.rain;
}
function makeWeekData(rawData) { const temperatureMax = rawData.daily.temperature_2m_max; const temperatureMin = rawData.daily.temperature_2m_min; const weatherCode = rawData.daily.weathercode;
}