2015-02-08

使用YQL & Yahoo Weather API 查詢天氣


先到 https://weather.yahoo.com/ 查天氣區域代碼,例如輸入 Kaohsiung 查詢,
就會顯示 Kaohsiung City的天氣,此時網址為:
https://weather.yahoo.com/taiwan/kaohsiung-city/kaohsiung-city-2306180/
其中的2306180即為高雄市代碼。

再利用Yahoo Weather API
https://developer.yahoo.com/weather/
輸入YQL:
select item.condition from weather.forecast where woeid = 2306180 and u="c"
u="c"代表用攝氏表示,預設為華氏,在Endpoint就會產生所需要的JSON(或XML)資料回傳網址。

回傳的JSON資料,key=value可參考 https://developer.yahoo.com/weather/documentation.html

之後就可以在網頁上顯示天氣資料了,譬如要顯示天氣狀況和溫度:

$.getJSON('https://query.yahooapis.com/v1/public/yql?q=select%20item.condition%20from%20weather.forecast%20where%20woeid%20%3D%202306180%20and%20u%3D%22c%22&format=json&callback=?', function(json) {
  var w_code = weather_con[json.query.results.channel.item.condition.code.toString()];
  var w_temp = json.query.results.channel.item.condition.temp + "℃";
  console.log(w_code);
  console.log(w_temp);
});

//這個我翻得可能不是很標準...
weather_con = {
"0":"龍捲風",
"1":"熱帶風暴",
"2":"颶風",
"3":"強雷陣雨",
"4":"雷陣雨",
"5":"混合雨雪",
"6":"混合雨雪",
"7":"混合雨雪",
"8":"冰凍小雨",
"9":"細雨",
"10":"凍雨",
"11":"陣雨",
"12":"陣雨",
"13":"飄雪",
"14":"陣雪",
"15":"吹雪",
"16":"下雪",
"17":"冰雹",
"18":"雨雪",
"19":"多塵",
"20":"多霧",
"21":"陰霾",
"22":"多煙",
"23":"狂風大作",
"24":"有風",
"25":"冷",
"26":"多雲",
"27":"晴間多雲(夜)",
"28":"晴間多雲(日)",
"29":"晴間多雲(夜)",
"30":"晴間多雲(日)",
"31":"清晰的(夜)",
"32":"晴朗",
"33":"晴朗(夜)",
"34":"晴朗(日)",
"35":"雨和冰雹",
"36":"炎熱",
"37":"雷陣雨",
"38":"零星雷陣雨",
"39":"零星雷陣雨",
"40":"零星雷陣雨",
"41":"大雪",
"42":"零星陣雪",
"43":"大雪",
"44":"多雲",
"45":"雷陣雨",
"46":"陣雪",
"47":"雷陣雨",
"3200":"資料錯誤"
};

沒有留言:

張貼留言