Я использую Forecast.io API с Skycons для значков в функции, которая вызывает API каждые n секунд.
При вызове второй функции значок исчезает. Интересно, что при настройке значка с жестко запрограммированным значком он работает, и я смущен. Что я делаю не так?
Мой скрипт:
var counter = 0;
var skycons = new Skycons({
"color": "#6c5848"
});
var data;
var apiKey = '6b5c02819a985881e46287c6507a9800';
var lati = 50;
var longi = 25;
var url = 'https://api.forecast.io/forecast/' + apiKey + '/' + lati + ',' + longi + '?callback=?&units=ca';
var callback = function (data) {
var icon = data.currently.icon;
var tempC = data.currently.temperature;
var tempCfeel = data.currently.apparentTemperature;
// Icon
skycons.set( 'icon', icon ); // this line doesn't work and breaks the function
//skycons.set('icon', Skycons.SNOW); // this line works
// Temperature
$('#temp').html(tempC.toFixed(1) + ' °C / feels like ' + tempCfeel.toFixed(1) + ' °C');
counter++;
$('#counter').html(counter + ' API calls');
};
var fetchForecast = function () {
$.getJSON(url, callback);
};
fetchForecast();
skycons.play();
setInterval(fetchForecast, 5000);
Попробуй это:
var apiKey = '6b5c02819a985881e46287c6507a9800';
var lati = 50;
var longi = 25;
var url = 'https://api.forecast.io/forecast/' + apiKey + '/' + lati + ',' + longi + '?callback=?&units=ca';
var fetchForecast = function () {
var counter = 0;
var skycons = new Skycons({
"color": "#6c5848"
});
$.getJSON(url, function (data) {
var icon = data.currently.icon;
var tempC = data.currently.temperature;
var tempCfeel = data.currently.apparentTemperature;
// Icon
skycons.set( 'icon', icon ); // this line doesn't work
//skycons.set('icon', Skycons.SNOW); // this line works
// Temperature
$('#temp').html(tempC.toFixed(1) + ' °C / feels like ' + tempCfeel.toFixed(1) + ' °C');
counter++;
$('#counter').html(counter + ' API calls');
skycons.play();
});
};
setInterval(function(){
fetchForecast();
}, 1000);
Счетчик разоряется, но проверяйте консоль, ее запросы на стрельбу каждую секунду
У меня такая же проблема, я исправил ее с помощью набора строк типа wheater.
var icon = String(data.currently.icon);
При использовании строки из Forecast.io вы должны заключить ее в кавычки. Где вы используете icon
которая заменяет что-то наподобие partly-cloudy-night
, когда вы передаете ее в небо, она должна быть в кавычках. Надеюсь, это имеет смысл.