Я пытаюсь создать веб-приложение, которое может сравнивать текущие погодные условия с данными за предыдущую дату с помощью 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.
Не уверен, что мне не хватает, но любые указатели будут оценены.