Openweathermaps возвращает неправильные значки (показывает ночь вместо дня) - PullRequest
0 голосов
/ 08 ноября 2019

Я пишу простое приложение погоды и пытаюсь отобразить значки 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 просто не очень хорошие?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...