Google weather API 天气使用方式

因为Google Weather API并不是Google官方的API,所以Google并没有提供官方的文档,网上的关于Google Weather API的中文文章大多千篇一律,不知道被转载过多少次,英文文章中有些不错的文章,但是总得来说关于Google Weather API的详细的文章并不多见,所以决定提笔写这篇文章。
-----------------------------------------我是华丽的分割线-----------------------------------------
基础篇
    首先是如何调用Google Weather API,如果你在Google里搜索能够搜索出以下的内容,但是完全没有原始来源,看上去是很简单,说明也还算详细。
   1.邮政编码法:(只支持美国地区使用邮政编码进行查询
    http://www.google.com/ig/api?hl=zh-cn&weather=94043
    (94043 为 山景城, 美国加州 的邮政编码)
    2.经纬度坐标作法:
    http://www.google.com/ig/api?hl=zh-cn&weather=,,,30670000,104019996
    (30670000,104019996 为 成都, 中国大陆 的经纬度坐标)
    3.城市名称法:
    http://www.google.com/ig/api?weather=Beijing
    附:
    支持的国家代码列表:
    http://www.google.com/ig/countries?output=xml&hl=zh-cn
    (查询 Google 所支持的所有国家的代码,并以 zh-cn 简体中文显示)
    支持的城市代码列表:
    http://www.google.com/ig/cities?output=xml&hl=zh-cn&country=cn
    其实以上有很多地方是错误的。
    一、邮编法,支持的国家包括美国,加拿大,德国,英国,法国等,不仅仅是美国,以下是一些其他国家的例子,具体可以去尝试各种不同的国家邮编。
    加拿大多伦多 http://www.google.com/ig/api?weather=M4B1G5
    德国柏林 http://www.google.com/ig/api?weather=10115,DE (应该是和美国重复的关系需要加DE)
    法国巴黎 http://www.google.com/ig/api?weather=75008
    英国南安普顿 http://www.google.com/ig/api?weather=SO163UB
    反正不支持天朝,Google退出中国后,应该也不会有对于中国邮编的支持。
    二、经纬度法,没啥好说的,除了和Google Map API的经纬度用的单位不同需要转换,其他还是ok,可以和Google Map无缝衔接。
    三、城市名法,默认只支持英文,如果输入中文的话可以用Google Language API翻译成英文再查询,国际化本地化处理还是很方便的,要另它支持本国文字请看高级篇。
    四、支持国家和城市列表请无视,实在是不够全。
    标准返回XML形式(现在的温度+今天的详细预报+后三天的简略预报)
<xml_api_reply version="1">
<weather module_id="0" tab_id="0" mobile_row="0" mobile_zipped="1" row="0" section="0">
<forecast_information>
<city data="Shanghai, Shanghai"/>
<postal_code data="shanghai"/>
<latitude_e6 data=""/>
<longitude_e6 data=""/>
<forecast_date data="2010-09-13"/>
<current_date_time data="2010-09-14 06:00:00 +0000"/>
<unit_system data="SI"/>
</forecast_information>
<current_conditions>
<condition data="晴"/>
<temp_f data="79"/>
<temp_c data="26"/>
<humidity data="湿度: 83%"/>
<icon data="/ig/images/weather/sunny.gif"/>
<wind_condition data="风向: 东、风速:4 米/秒"/>
</current_conditions>
<forecast_conditions>
<day_of_week data="周一"/>
<low data="24"/>
<high data="29"/>
<icon data="/ig/images/weather/cn_cloudy.gif"/>
<condition data="多云"/>
</forecast_conditions>
<forecast_conditions>
<day_of_week data="周二"/>
<low data="24"/>
<high data="29"/>
<icon data="/ig/images/weather/chance_of_storm.gif"/>
<condition data="可能有暴风雨"/>
</forecast_conditions>
<forecast_conditions>
<day_of_week data="周三"/>
<low data="24"/>
<high data="32"/>
<icon data="/ig/images/weather/chance_of_storm.gif"/>
<condition data="可能有暴风雨"/>
</forecast_conditions>
<forecast_conditions>
<day_of_week data="周四"/>
<low data="25"/>
<high data="30"/>
<icon data="/ig/images/weather/chance_of_rain.gif"/>
<condition data="可能有雨"/>
</forecast_conditions>
</weather>
</xml_api_reply>
-----------------------------------------我是华丽的分割线-----------------------------------------
高级应用篇
    一、国际化本地化
    hl 返回的语言文字(ISO639语言编码+国家缩写,如zh_CN,en_US等),不选的话默认会根据(操作系统?IP地址?)返回语言,就我本人来看切换浏览器语言返回的都是中文。
    ie 输入文字编码(浏览器语言编码) 有了这个参数就可以使用下面这样的查询
    http://www.google.com/ig/api?weather=上海&hl=zh_CN&ie=gb2312
    oe 输出文字编码(浏览器语言编码) 这个主要是为了控制输出内容能正常显示的编码
    http://www.google.com/ig/api?weather=上海&hl=zh_CN&ie=gb2312&oe=gb2312
    output 输出格式(xml,json)只有少部分数据能返回json值...这一点远不如Twitter和Facebook的API来得好...
    二、多城市查询
    weather 城市名/经纬度/邮政编码最神奇的就是这个参数了,实际上你可以传多个weather参数来返回城市信息。(某同事尝试出来的)比如
    http://www.google.com/ig/api?weather=上海&weather=北京&hl=zh_CN&ie=gb2312&oe=gb2312
    其实实际运用并不这么简单,Google提供了各种api可以一起拼接在一起...非常佩服Google的神人...
    http://www.google.com/ig/api?movies=new%20york&weather=上海&stock=Google&hl=zh_CN&ie=gb2312&oe=gb2312
-----------------------------------------我是华丽的分割线-----------------------------------------
实际运用篇
    一、调用方法
    因为Google这一系列的API都在Google.com这个域下面,跨域请求XML的话没有啥很好的办法,Google域的http://www.google.com/crossdomain.xml又非常严格,非公开的API完全不支持跨域,一般都是自己服务器做个代理。YUI里有个很好的例子(前端YUI到后端PHP代码都有) http://developer.yahoo.com/yui/3/examples/io/io-weather.html。不过其中调用的是Yahoo Weather API,稍微修改下就能用在Google Weather API上了,具体实现并不难,无论是web应用还是iPhone,android的应用,使用Google Weather API的很多。
    二,异常情况
    因为Google Weather API并不是公开的,所以很多异常都会出现,某些重要城市的天气找不到,比如天津一天总有几个小时找不到温度情况,或者返回的温度或者天气状况会是空值,或者干脆一段时间不更新天气信息之类种种,或者说预报温度不是很准等等,具体可以去看Google的投诉版...
    三、其他API
    Yahoo Weather API本身比Google Weather API的数据结果强大,不过国际化本地化是个大问题,最重要的是Yahoo Weather API是不能从事商业用途的。当然你想用在天朝也很正常,知识产权版权一向是被我们所忽视的。我只看到过iphone, ipod, android的官方天气运用使用这个(估计是付钱的),其他的国内的一些实在是不清楚来源不敢用。

    大概就是这么多,分享出来给大家。


转自:http://hi.baidu.com/sulmas/blog/item/ad0edb13173f1535dc540124.html
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值