Я пишу простое приложение погоды и пытаюсь отобразить значки openweathermap (OWM), которые возвращаются для получения приятного визуального эффекта. Вот моя функция вызова API:
var openWeatherMapsApiKey = 'myKey';
var zipCode = myZip
var url = `https://api.openweathermap.org/data/2.5/forecast?zip=${zipCode},us&cnt=56&mode=json&APPID=${openWeatherMapsApiKey}`
function getWeather(url){
return new Promise( (resolve, reject) => {
var weatherRequest = new XMLHttpRequest()
weatherRequest.open('GET', url);
weatherRequest.onload = function(){
if (weatherRequest.status === 200) {
resolve(weatherRequest.response)
} else {
reject(weatherRequest.statusText)
}
} // .onload
weatherRequest.send()
})
}
Результат слишком велик, чтобы вставить его сюда, но я получаю в основном ответный объект, который содержит массив списков с 40 элементами, каждый элемент являетсяпрогноз погоды, с элементом [0], который является погодой сегодня ночью в полночь (я думаю?), а каждый следующий элемент - прогноз погоды через 3 часа. Я написал небольшую функцию для извлечения времени и значка, возвращаемого в каждом элементе из списка:
getWeather(url)
.then( (response) => {
let data = JSON.parse(response)
let sampleData = [ ]
console.log(data);
data.list.forEach( (hour) => {
sampleData.push( [hour.dt_txt, hour.weather[0].icon] )
})
console.log(sampleData);
})
Этот фрагмент кода просто показывает вам, как я получаю следующий результат. Я получаю массив массивов, каждый подмассив показывает время и значок, связанный с ним. На значке будет указано «d» или «n» для дня и ночи:
[
["2019-11-08 00:00:00","01n"],
[ "2019-11-08 03:00:00","01n"],
["2019-11-08 06:00:00","01n"],
["2019-11-08 09:00:00","01n"],
["2019-11-08 12:00:00","01n"],
["2019-11-08 15:00:00","01d"],
["2019-11-08 18:00:00","01d"],
["2019-11-08 21:00:00","01d"],
["2019-11-09 00:00:00","01n"],
["2019-11-09 03:00:00","01n"],
["2019-11-09 06:00:00","01n"],
["2019-11-09 09:00:00","01n" ],
["2019-11-09 12:00:00","01n"],
["2019-11-09 15:00:00","01d"],
["2019-11-09 18:00:00","01d"],
["2019-11-09 21:00:00","01d"],
["2019-11-10 00:00:00","01n"],
["2019-11-10 03:00:00","01n"],
["2019-11-10 06:00:00","01n"],
["2019-11-10 09:00:00","01n"],
["2019-11-10 12:00:00","01n"],
["2019-11-10 15:00:00","01d"],
["2019-11-10 18:00:00","01d"],
["2019-11-10 21:00:00","01d"],
["2019-11-11 00:00:00","01n"],
["2019-11-11 03:00:00","01n"],
["2019-11-11 06:00:00","01n"],
["2019-11-11 09:00:00","01n"],
["2019-11-11 12:00:00","01n"],
["2019-11-11 15:00:00","01d"],
["2019-11-11 18:00:00","01d"],
["2019-11-11 21:00:00","01d"],
["2019-11-12 00:00:00","01n"],
["2019-11-12 03:00:00","01n"],
["2019-11-12 06:00:00","01n"],
["2019-11-12 09:00:00","01n"],
["2019-11-12 12:00:00","01n"],
["2019-11-12 15:00:00","01d"],
["2019-11-12 18:00:00","02d"],
["2019-11-12 21:00:00","03d"]
]
Если посмотреть на первый день, это говорит о том, что 9:00 и 12:00 - это ночь? Это чертовски запутанно, когда я настраиваю свое приложение, чтобы сообщать мне погоду в полдень или 9 каждый день в течение следующих 5 дней и видеть ночные значки. Я гуглил и искал здесь, но не мог найти причину для этого. Похоже, что это неправильно в разных почтовых индексах или при поиске по названию города. Я что-то пропустил? Или данные из OWM просто не очень хорошие?