采集腾讯天气的js

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().setContainer('weather_container').init('01012315');//01012315为腾讯天气烟台的代码

new TW().setContainer('right_weather').isBigWeatherImage(false).queryAddressWeather();


部分方法说明:

getUserGeoPosition

查询会员所在地区,自已根据应用写一个返回会员所有省和城市的json,格式{"province":'xxxx',"city":'xxxx'}
queryAddressWeather 会调用此方法

init

根据地区代码显示天气信息

setContainer

设置天气信息在哪个 dom中显示,参数是dom id的值

isBigWeatherImage

设置天气的图片是大还是小

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 6
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值