使用Yahoo! Weather API
最近好像google weather api停止服務了,今天來Yahoo! Open Hackday就研究一下Yahoo!的weather API,而剛好也看到網路上別人寫的範例,修修改改一下就很好用了。
API說明
Yahoo! Weather API
他的API網址大概如下
location是Yahoo!定義的地點代碼,可以到Yahoo! Weather查詢地點代碼。
參考範例
How to use Geolocation and Yahoo’s APIs to build a simple weather webapp
透過定位取得天氣狀態
透過weatherYQL取得天氣資訊
把天氣資訊append到DOM上
抓到資料後可以根據自己想要的方式調整UI跟行為,就可以使用了。
API說明
Yahoo! Weather API
他的API網址大概如下
http://weather.yahooapis.com/forecastrss?w=location
location是Yahoo!定義的地點代碼,可以到Yahoo! Weather查詢地點代碼。
參考範例
How to use Geolocation and Yahoo’s APIs to build a simple weather webapp
透過定位取得天氣狀態
- function locationSuccess(position) {
- var lat = position.coords.latitude;
- var lon = position.coords.longitude;
- var geoAPI = 'http://where.yahooapis.com/geocode?location='+lat+','+lon+'&flags=J&gflags=R&appid=';
- var wsql = 'select * from weather.forecast where woeid=WID and u="'+DEG+'"',
- weatherYQL = 'http://query.yahooapis.com/v1/public/yql?q='+encodeURIComponent(wsql)+'&format=json&callback=?',
- code, city, results, woeid;
- }
透過weatherYQL取得天氣資訊
- $.getJSON(weatherYQL.replace('WID',woeid), function(r){
- if(r.query && r.query.count == 1){
- // Create the weather items in the #scroller UL
- var item = r.query.results.channel.item.condition;
- if(!item){
- showError("We can't find weather information about your city!");
- if (window.console && window.console.info){
- console.info("%s, %s; woeid: %d", city, code, woeid);
- }
- return false;
- }
- addWeather(item.code, "Now", item.text + ' <b>'+item.temp+'°'+DEG+'</b>');
- for (var i=0;i<2;i++){
- item = r.query.results.channel.item.forecast[i];
- addWeather(
- item.code,
- item.day +' <b>'+item.date.replace('\d+$','')+'</b>',
- item.text + ' <b>'+item.low+'°'+DEG+' / '+item.high+'°'+DEG+'</b>'
- );
- }
- // Add the location to the page
- location.html(city+', <b>'+code+'</b>');
- weatherDiv.addClass('loaded');
- // Set the slider to the first slide
- showSlide(0);
- }
- else {
- showError("Error retrieving weather data!");
- }
- });
把天氣資訊append到DOM上
- function addWeather(code, day, condition){
- var markup = '<li>'+
- '<img src="img/icons/'+ weatherIconMap[code] +'.png" />'+
- ' <p class="day">'+ day + '</p> <p class="cond">'+ condition +
- '</p></li>';
- scroller.append(markup);
- }
抓到資料後可以根據自己想要的方式調整UI跟行為,就可以使用了。
留言