以下是根据前段时间项目需要查询天气的相关总结代码:
引用:
<script type="text/javascript" src="//code.jquery.com/jquery-1.11.0.min.js"></script>
<script type="text/javascript" src="//js.maxmind.com/js/apis/geoip2/v2.0/geoip2.js"></script>
var myFn=(function($){
var myObject={};
var _Command=function(options){
var params={
url:'',
callback:function(){}
}
$.extend(params, options || {});
$.getJSON(params.url,function(data){
params.callback(data);
})
}
var _GetCity=function(callback){
geoip2.city(function(data){
callback(data);
})
}
myObject.Command={
GetCityDataFormIP:function(callback){
return _GetCity(callback);
},
GetCityData:function(options,callback){
if($.isFunction(options)){
callback=options;
options={};
}
options = $.extend({city:'Shanghai'},options, {});
var url='http://query.yahooapis.com/v1/public/yql?q=select%20*%20from%20geo.places%20where%20text%3D%22'+options.city+'%22&format=json&diagnostics=true&callback=?';
return _Command({
url:url,
callback:callback
})
},
GetYahooWeatherData:function(options,callback){
if($.isFunction(options)){
callback=options;
options={};
}
options = $.extend({WOEID:'2151849',Type:'c'},options, {});
var url='http://query.yahooapis.com/v1/public/yql?q=select%20*%20from%20weather.forecast%20where%20woeid='+options.WOEID+'%20and%20u="'+options.Type+'"&format=json&diagnostics=true&callback=?';
return _Command({
url:url,
callback:callback
})
}
}
return myObject;
}(jQuery));
相关方法介绍:
1. myFn.Command.GetCityDataFormIP(); 根据当前客户机获取对应的城市,该方法需要通过传一个回调函数获得返回值:
myFn.Command.GetCityDataFormIP(function(data){ console.log(data) })
2. myFn.Command.GetCityData(); 根据城市名获取相关数据,调用:
myFn.Command.GetCityData({city:'城市名'},function(data){ console.log(data) });
该方法的返回值是一个JSON对象其中包含我们需要的城市ID(WOEID),具体的结果集可以在Chrome控制台输出查看。
3.myFn.Command.GetYahooWeatherData();根据城市IE(WOEID)获取Yahoo Weather API 的返回结果,调用:
myFn.Command.GetYahooWeatherData({WOEID,'获取的城市ID',Type:'返回结果的类型 c:摄氏度,f:华氏度'},function(data){ console.log(data) });
返回值包括风向,温度等等,具体的结果集可以在Chrome控制台输出查看。
注:以上参数不能使中文!