Как вернуть исторические данные из Dark Sky API Time Machine - PullRequest
1 голос
/ 06 февраля 2020

Я пытаюсь создать веб-приложение, которое может сравнивать текущие погодные условия с данными за предыдущую дату с помощью API Dark Sky. Моей конечной целью было бы иметь возможность выбрать дату, нажать кнопку «Получить данные» и просмотреть следующие результаты:

Current Weather           Weather on Chosen Date     Difference 
- today's temperature     - previous temp            - x degrees warmer/cooler
- today's humidity        - previous humidity        - x percent more/less humid
- etc                     - etc                      - etc

У меня есть пример работы над CodePen: https://codepen.io/mikejandreau/pen/ExjxQGE

apiKey в настоящее время выставлено - оно будет изменено и затемнено при производстве.

В этом примере в верхнем разделе указано местоположение пользователя с использованием данных геолокации и текущей даты / времени. Панель «Текущий» успешно отображает текущие погодные условия, и переключатель Фаренгейта / Цельсия работает.

Это сокращенная версия вызова к Dark Sky, содержащая только строку Time Machine (полная версия на примере CodePen):

// Retrieve location and data from JSON on load.
$(window).on("load", function () {
    if ("geolocation" in navigator) {
        navigator.geolocation.getCurrentPosition(function(position) {

            // geologation for weather data
            var lat = position.coords.latitude;
            var lon = position.coords.longitude;

            $.getJSON("https://api.darksky.net/forecast/"+apiKey+"/"+lat+","+lon+","+previousDate+"?exclude=currently,flags", getHistoricalData);

        });
    } else {
        alert("Browser doesn't support geolocation!");
    }
});

Переменная previousDate использует UNIX отметка времени, которая в настоящее время объявлена ​​выше (window).on("load", function(). Концептуально, я думаю, что процесс, который должен произойти, это выбор даты и нажатие кнопки, дата преобразуется в отметку времени UNIX, указанная отметка времени добавляется к вызову getJSON. Вот где я застрял, так как исторические данные, похоже, не работают.

Это должно обновить текст на основе данных JSON (строка 180 на примере CodePen):

// HTML data display from JSON.
var getHistoricalData = function(dataHist) {
    console.log(dataHist);
    $("#past_date").text(formattedTime);
    $("#past_summary").text(dataHist.hourly.data.summary);
    $("#past_degree").html(tempConvert(dataHist.hourly.data.temperature));
    $("#past_humidity").html(Math.round(dataHist.hourly.data.humidity * 100));
    $("#past_precip").html(Math.round(dataHist.daily.data[0].precipProbability * 100));
    $("#past_wind-speed").html(Math.round(dataHist.hourly.data.windSpeed * 1.6));
};

Документация Dark Sky содержит ноль рабочих примеров, которые я могу перепроектировать, и хотя существуют действующие демонстрации API, я еще не нашел работающий пример функциональности Time Machine.

Не уверен, что мне не хватает, но любые указатели будут оценены.

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