テンセントの天気を採集する.

4901 ワード

var TW=function(){
	this.info=null;
	this.ico='bigImg';
};
TW.weatherTxt =[' ', '  ', ' ', '  ', '   ', '        ', '   ', '  ', '  ', '  ', '  ', '   ', '    ', '  ', '  ', '  ', '  ', '  ', ' ', '  ', '   ', '  -  ', '  -  ', '  -  ', '  -   ', '   -    ', '  -  ', '  -  ', '  -  ', '  ', '  ', '    ', ' ', '   ', '    ', '  '];
TW.windDir = ['', '   ', '  ', '   ', '  ', '   ', '  ', '   ', '  ', '    '];
TW.windPower = ['  ', '3-4 ', '4-5 ', '5-6 ', '6-7 ', '7-8 ', '8-9 ', '9-10 ', '10-11 ', '11-12 '];
TW.ico = 'http://mat1.gtimg.com/weather/weatherIco/{:ico}/{:code}.png';

TW.prototype.init = function(c){
		var self=this;
		var url='http://weather.gtimg.cn/city/'+c+'.js?ref=qqchannel';
		var ele='#'+this.info;
		
		$.getScript(url, function(data, textStatus){
			if(textStatus=='success'){
				var wInfo = __weather_city;
				var s='<ul>';
				var imageIco='';
				
				if (TW.weatherTxt[Math.abs(wInfo.sk_wt)] != undefined) {
					var vi=Math.abs(wInfo.sk_wt);
					
					var imurl=TW.ico.replace('{:ico}',self.ico);
					imurl=(self.ico=='bigImg')?imurl.replace('{:code}',vi):imurl.replace('{:code}','m'+vi);
					
					imageIco+='<dt><img src="'+imurl+'" title="'+TW.weatherTxt[vi]+'"/></dt>';
					s+='<li>'+TW.weatherTxt[vi]+',</li>';
				}
				var hwt=wInfo.wk['0'][0].tmin;
				if(hwt==='NULL') hwt=wInfo.wk['0'][0].tmax;
				s+='<li>'+hwt+'℃,</li>';
				
				if (TW.windDir[wInfo.sk_wd] != undefined) {
					s+='<li>'+TW.windDir[wInfo.sk_wd]+'</li>';
				}
				if (TW.windPower[wInfo.sk_wp] != undefined) {
					s+='<li>('+TW.windPower[wInfo.sk_wp]+')</li>';
				}
				s+='</ul>';
				if(imageIco.length>0) s='<dl>'+imageIco+'<dd>'+s+'</dd></dl>';
				
				$(ele).empty().append(s).find('li').css({'display':'inline','list-style':'none'});
			}
		});
	};
TW.prototype.setContainer = function(ct){
		this.info=ct;
		$('#'+ct).append($('<div></div>').attr('id','wlayer').css({
			'text-align':'center',
			'width':'100%',
			'height':'30px',
			'line-height':'30px',
			'color':'#999'
		}).text('        '));
		
		return this;
	};
TW.prototype.isBigWeatherImage=function(b){
		if(!b) this.ico='midImg';
		return this;
	};
TW.prototype.queryAddressWeather = function(){
	var self=this;
	//       
	this.getUserGeoPosition(function(p,c){
		if(c.length==0){
			$('#'+self.info).text('      ,             ').css({'color':'#fff','padding-top':'10px','padding-bottom':'10px','text-align':'center','background-color':'#f00'});
			return;
		}
		try{
			//  code
			$.getScript('http://weather.news.qq.com/index2012/js/cityDir_v7.js', function(data, textStatus){
				if(textStatus=='success'){
					var swt = Site.Weather;
					//p c     
					var swt_code=null;
					
					for(var sc in swt.city){
						//   
						if(sc.indexOf(p)!=-1){
							//   
							for(var sd in swt.city[sc]){
								if(sd.indexOf(c)!=-1){
									swt_code=swt.city[sc][sd];
									break;
								}
							}
							if(!swt_code) swt_code=swt.city[sc]['_'];
							break;
						}
					}
					self.init(swt_code);
				}
			});
		}catch (e){}
	});
	};
TW.prototype.resetGeoPosition = function(code){
		this.init(code);
	};
TW.prototype.getUserGeoPosition=function(cb){
		$.getJSON('/address/?do=transfer',function(json){
			cb(json.province,json.city);
		});
	};
呼び出しの例:
new TW().set Continer(''weat hers ucontainer').init('01010112315')//01010112315テンセント気象煙台のコードです.
new TW().set Contactainer('right Mouweather').isBigWeat here Image(false).queryAddres Weather();
一部の方法説明:
getUserGeoPosition
会員の所在地を調べて、自分でアプリケーションによって書いて会員のすべての省と都市のjsonに帰ります.フォーマットは「province」です.「xxxx」「city」です.
地域コードによって天気情報を表示します.
天気情報はどれに設定しますか? domに表示されているパラメータはdomです. idの値isBigWeat here Image
天気の写真は大きいですか?それとも小さいですか?