Acest fișier conține funcții care interacționează cu API-ul OpenWeather pentru a obține date meteo pentru diverse locații. Mai jos este o descriere detaliată a fiecărei funcții, modul de utilizare și exemple de integrare în alte fișiere.
Pentru a utiliza funcțiile din apiOpenWeather.js
în alte fișiere, trebuie mai
întâi să le exporți și să le imporți corespunzător.
În apiOpenWeather.js
, funcțiile sunt exportate astfel:
export {
getWeatherByCityName,
getWeatherByCoordinates,
getWeatherForecastByCityName,
getWeatherForecastByCoordinates,
getUVIndex,
getAirPollution,
getGeocoding,
getReverseGeocoding,
getWeatherMap,
getAirPollutionForecast,
getAirPollutionHistory,
getWeatherIconUrl,
};
Pentru a importa și utiliza aceste funcții în alte fișiere, folosește import
:
import {
getWeatherByCityName,
getWeatherForecastByCityName,
} from './apiOpenWeather.js';
Funcție auxiliară pentru a face cereri HTTP și a obține date de la API.
url
(string): URL-ul pentru cererea API.
Un Promise care se rezolvă cu datele obținute de la API.
const API_KEY = 'c28b86768a874c70b1ecd1343e8f0f24';
const BASE_URL = 'https://api.openweathermap.org/data/2.5';
async function fetchFromAPI(url) {
const response = await fetch(url);
const data = await response.json();
return data;
}
Această funcție este folosită intern de toate celelalte funcții pentru a trimite cereri API și a prelua date. Nu este destinată utilizării directe.
Obține datele meteo actuale pentru un oraș specificat.
city
(string): Numele orașului.
Un Promise care se rezolvă cu datele meteo pentru orașul specificat.
{
"coord": { "lon": 26.1025, "lat": 44.4268 },
"weather": [
{ "id": 800, "main": "Clear", "description": "clear sky", "icon": "01d" }
],
"base": "stations",
"main": {
"temp": 28.02,
"feels_like": 27.79,
"temp_min": 26.1,
"temp_max": 30.56,
"pressure": 1012,
"humidity": 60
},
"visibility": 10000,
"wind": { "speed": 2.68, "deg": 305, "gust": 3.66 },
"clouds": { "all": 0 },
"dt": 1623244323,
"sys": {
"type": 2,
"id": 2038501,
"country": "RO",
"sunrise": 1623193180,
"sunset": 1623251100
},
"timezone": 10800,
"id": 683506,
"name": "Bucharest",
"cod": 200
}
import { getWeatherByCityName } from './apiOpenWeather.js';
getWeatherByCityName('București')
.then(data => {
console.log(data);
})
.catch(error => {
console.error('Error fetching weather data:', error);
});
Elemente Cheie ale Răspunsului:
name
: Numele orașului.main.temp
: Temperatura curentă.weather[0].description
: Descrierea vremii.main.humidity
: Umiditatea.
Obține datele meteo actuale pentru coordonate geografice specificate.
lat
(number): Latitudinea locației.lon
(number): Longitudinea locației.
Un Promise care se rezolvă cu datele meteo pentru coordonatele specificate.
Vezi getWeatherByCityName.
import { getWeatherByCoordinates } from './apiOpenWeather.js';
getWeatherByCoordinates(44.4268, 26.1025)
.then(data => {
console.log(data);
})
.catch(error => {
console.error('Error fetching weather data:', error);
});
Elemente Cheie ale Răspunsului:
- Format similar cu cel al funcției
getWeatherByCityName
.
Obține prognoza meteo pe 5 zile la intervale de 3 ore pentru un oraș specificat.
city
(string): Numele orașului.
Un Promise care se rezolvă cu datele meteo pentru orașul specificat.
{
"cod": "200",
"message": 0,
"cnt": 40,
"list": [
{
"dt": 1623253200,
"main": {
"temp": 28.52,
"feels_like": 28.65,
"temp_min": 28.52,
"temp_max": 28.52,
"pressure": 1013,
"sea_level": 1013,
"grnd_level": 1007,
"humidity": 54
},
"weather": [
{
"id": 800,
"main": "Clear",
"description": "clear sky",
"icon": "01d"
}
],
"clouds": { "all": 1 },
"wind": { "speed": 2.68, "deg": 305 },
"visibility": 10000,
"pop": 0,
"sys": { "pod": "d" },
"dt_txt": "2021-06-09 15:00:00"
}
// ...alte date
],
"city": {
"id": 683506,
"name": "Bucharest",
"coord": { "lat": 44.4268, "lon": 26.1025 },
"country": "RO",
"population": 1877155,
"timezone": 10800,
"sunrise": 1623193180,
"sunset": 1623251100
}
}
import { getWeatherForecastByCityName } from './apiOpenWeather.js';
getWeatherForecastByCityName('București')
.then(data => {
console.log(data);
})
.catch(error => {
console.error('Error fetching weather data:', error);
});
Elemente Cheie ale Răspunsului:
list
: O listă de date meteo pentru intervale de 3 ore.city.name
: Numele orașului.list[0].main.temp
: Temperatura la un anumit interval.list[0].weather[0].description
: Descrierea vremii la un anumit interval.
Obține prognoza meteo pe 5 zile la intervale de 3 ore pentru coordonate geografice specificate.
lat
(number): Latitudinea locației.lon
(number): Longitudinea locației.
Un Promise care se rezolvă cu datele meteo pentru coordonatele specificate.
Vezi getWeatherForecastByCityName.
import { getWeatherForecastByCoordinates } from './apiOpenWeather.js';
getWeatherForecastByCoordinates(44.4268, 26.1025)
.then(data => {
console.log(data);
})
.catch(error => {
console.error('Error fetching weather data:', error);
});
Elemente Cheie ale Răspunsului:
- Format similar cu cel al funcției
getWeatherForecastByCityName
.
Index(lat, lon)
Obține indicele UV pentru coordonate geografice specificate.
lat
(number): Latitudinea locației.lon
(number): Longitudinea locației.
Un Promise care se rezolvă cu indicele UV pentru coordonatele specificate.
{
"lat": 44.4268,
"lon": 26.1025,
"date_iso": "2021-06-09T12:00:00Z",
"date": 1623244800,
"value": 7.15
}
import { getUVIndex } from './apiOpenWeather.js';
getUVIndex(44.4268, 26.1025)
.then(data => {
console.log(`Indicele UV pentru coordonatele [44.4268, 26.1025]:`, data);
})
.catch(error => {
console.error('Error fetching UV index:', error);
});
Elemente Cheie ale Răspunsului:
lat
: Latitudinea.lon
: Longitudinea.date_iso
: Data și ora pentru care a fost calculat indicele UV.value
: Valoarea indicele UV.
Obține datele despre poluarea aerului pentru coordonate geografice specificate.
lat
(number): Latitudinea locației.lon
(number): Longitudinea locației.
Un Promise care se rezolvă cu datele despre poluarea aerului pentru coordonatele specificate.
{
"coord": { "lon": 26.1025, "lat": 44.4268 },
"list": [
{
"main": { "aqi": 3 },
"components": {
"co": 201.94,
"no": 0.0,
"no2": 0.0,
"o3": 68.78,
"so2": 0.64,
"pm2_5": 15.46,
"pm10": 20.23,
"nh3": 0.0
},
"dt": 1623244800
}
]
}
import { getAirPollution } from './apiOpenWeather.js';
getAirPollution(44.4268, 26.1025)
.then(data => {
console.log(
`Poluarea aerului pentru coordonatele [44.4268, 26.1025]:`,
data
);
})
.catch(error => {
console.error('Error fetching air pollution data:', error);
});
Elemente Cheie ale Răspunsului:
coord
: Coordonatele pentru care s-au obținut datele.list[0].main.aqi
: Indexul calității aerului.list[0].components
: Componentele poluării (CO, NO, NO2, O3, SO2, PM2.5, PM10, NH3).
Obține coordonatele geografice pentru un oraș specificat.
city
(string): Numele orașului.
Un Promise care se rezolvă cu coordonatele geografice pentru orașul specificat.
[
{
"name": "Bucharest",
"local_names": { "ro": "București" },
"lat": 44.4268,
"lon": 26.1025,
"country": "RO"
}
]
import { getGeocoding } from './apiOpenWeather.js';
getGeocoding('București')
.then(data => {
console.log(`Coordonatele pentru București:`, data);
})
.catch(error => {
console.error('Error fetching geocoding data:', error);
});
Elemente Cheie ale Răspunsului:
name
: Numele orașului.lat
: Latitudinea.lon
: Longitudinea.country
: Codul țării.
Obține numele locației pentru coordonate geografice specificate (geocodare inversă).
lat
(number): Latitudinea locației.lon
(number): Longitudinea locației.
Un Promise care se rezolvă cu numele locației pentru coordonatele specificate.
[
{
"name": "Bucharest",
"local_names": { "ro": "București" },
"lat": 44.4268,
"lon": 26.1025,
"country": "RO"
}
]
import { getReverseGeocoding } from './apiOpenWeather.js';
getReverseGeocoding(44.4268, 26.1025)
.then(data => {
console.log(
`Numele locației pentru coordonatele [44.4268, 26.1025]:`,
data
);
})
.catch(error => {
console.error('Error fetching reverse geocoding data:', error);
});
Elemente Cheie ale Răspunsului:
name
: Numele locației.lat
: Latitudinea.lon
: Longitudinea.country
: Codul țării.
Obține hărți meteo pentru straturi specifice (precipitații, nori, temperatură etc.).
layer
(string): Tipul stratului de hartă (ex. precipitații, temperatură).zoom
(number): Nivelul de zoom al hărții.x
(number): Coordonata X a hărții.y
(number): Coordonata Y a hărții.
Un Promise care se rezolvă cu răspunsul HTTP pentru imaginea stratului de hartă.
import { getWeatherMap } from './apiOpenWeather.js';
getWeatherMap('precipitation', 10, 523, 256)
.then(response => {
console.log(`Harta meteo pentru stratul de precipitații:`, response);
})
.catch(error => {
console.error('Error fetching weather map:', error);
});
Elemente Cheie ale Răspunsului:
- Răspunsul este o imagine care poate fi afișată într-un element HTML
<img>
sau salvată pe disc.
Obține prognoza pentru poluarea aerului pentru coordonate geografice specificate.
lat
(number): Latitudinea locației.lon
(number): Longitudinea locației.
Un Promise care se rezolvă cu prognoza pentru poluarea aerului pentru coordonatele specificate.
{
"coord": { "lon": 26.1025, "lat": 44.4268 },
"list": [
{
"main": { "aqi": 3 },
"components": {
"co": 201.94,
"no": 0.0,
"no2": 0.0,
"o3": 68.78,
"so2": 0.64,
"pm2_5": 15.46,
"pm10": 20.23,
"nh3": 0.0
},
"dt": 1623244800
}
]
}
import { getAirPollutionForecast } from './apiOpenWeather.js';
getAirPollutionForecast(44.4268, 26.1025)
.then(data => {
console.log(
`Prognoza poluării aerului pentru coordonatele [44.4268, 26.1025]:`,
data
);
})
.catch(error => {
console.error('Error fetching air pollution forecast:', error);
});
Elemente Cheie ale Răspunsului:
coord
: Coordonatele pentru care s-au obținut datele.list[0].main.aqi
: Indexul calității aerului.list[0].components
: Componentele poluării (CO, NO, NO2, O
3, SO2, PM2.5, PM10, NH3).
Obține istoricul poluării aerului pentru coordonate geografice specificate între datele de start și end (în format UNIX timestamp).
lat
(number): Latitudinea locației.lon
(number): Longitudinea locației.start
(number): Timpul de început al perioadei în format UNIX timestamp.end
(number): Timpul de sfârșit al perioadei în format UNIX timestamp.
Un Promise care se rezolvă cu istoricul poluării aerului pentru coordonatele specificate.
{
"coord": { "lon": 26.1025, "lat": 44.4268 },
"list": [
{
"main": { "aqi": 3 },
"components": {
"co": 201.94,
"no": 0.0,
"no2": 0.0,
"o3": 68.78,
"so2": 0.64,
"pm2_5": 15.46,
"pm10": 20.23,
"nh3": 0.0
},
"dt": 1623244800
}
]
}
import { getAirPollutionHistory } from './apiOpenWeather.js';
getAirPollutionHistory(44.4268, 26.1025, 1623244800, 1623331200)
.then(data => {
console.log(
`Istoricul poluării aerului pentru coordonatele [44.4268, 26.1025]:`,
data
);
})
.catch(error => {
console.error('Error fetching air pollution history:', error);
});
Elemente Cheie ale Răspunsului:
coord
: Coordonatele pentru care s-au obținut datele.list[0].main.aqi
: Indexul calității aerului.list[0].components
: Componentele poluării (CO, NO, NO2, O3, SO2, PM2.5, PM10, NH3).
Obține URL-ul iconiței meteo pentru un cod specific de iconiță furnizat de API-ul OpenWeather.
iconCode
(string): Codul iconiței meteo (de exemplu,01d
,02n
).
Un URL sub formă de string care poate fi utilizat pentru a descărca și afișa iconița meteo.
Nu există un răspuns JSON propriu-zis deoarece funcția returnează direct un URL sub formă de string. URL-ul poate fi utilizat pentru a încărca imaginea iconiței meteo.
import { getWeatherIconUrl } from './apiOpenWeather.js';
const iconCode = '01d';
const iconUrl = getWeatherIconUrl(iconCode);
console.log(`URL pentru iconița meteo cu codul ${iconCode}:`, iconUrl);
// URL pentru iconița meteo cu codul 01d: http://openweathermap.org/img/wn/01d.png
Iată ce reprezintă aceste coduri:
- 01d: Zi însorită (clear sky during the day).
- 01n: Noapte senină (clear sky during the night).
- 02d: Zi cu câțiva nori (few clouds during the day).
- 02n: Noapte cu câțiva nori (few clouds during the night).
- 03d: Zi parțial înnorată (scattered clouds during the day).
- 03n: Noapte parțial înnorată (scattered clouds during the night).
- 04d: Zi foarte înnorată (broken clouds during the day).
- 04n: Noapte foarte înnorată (broken clouds during the night).
- 09d: Zi cu ploi (shower rain during the day).
- 09n: Noapte cu ploi (shower rain during the night).
- 10d: Zi cu ploaie (rain during the day).
- 10n: Noapte cu ploaie (rain during the night).
- 11d: Zi cu furtună (thunderstorm during the day).
- 11n: Noapte cu furtună (thunderstorm during the night).
- 13d: Zi cu zăpadă (snow during the day).
- 13n: Noapte cu zăpadă (snow during the night).
- 50d: Zi cu ceață (mist during the day).
- 50n: Noapte cu ceață (mist during the night).
Elemente Cheie ale Răspunsului:
- URL-ul generat poate fi utilizat într-un element HTML
<img>
pentru a afișa iconița meteo. - URL-ul este generat pe baza unui șablon fix, care include codul iconiței meteo.
Pentru a afișa iconița meteo în aplicația ta, poți utiliza URL-ul returnat de
funcția getWeatherIconUrl
într-un element HTML <img>
:
<img id="weather-icon" src="URL_GENRATED_BY_FUNCTION" alt="Weather Icon" />
În JavaScript, poți actualiza dinamic src-ul imaginii:
document.getElementById('weather-icon').src = iconUrl;
Prin utilizarea acestei funcții, poți îmbunătăți vizualizarea datelor meteo în aplicația ta prin adăugarea iconițelor relevante pentru condițiile meteo curente.