`
Ryee
  • 浏览: 284906 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

雅虎API创建天气预报

阅读更多

yahoo天气预报的url是http://weather.yahooapis.com/forecastrss?w=2151330&u=c参数w对应各个地方在yahoo数据库中的WOEID,如北京的WOEID是2151330,目前也可以用参数p来代替w,不过官方还是推荐用w,p是计划要被取消的。参数u用于确定温度的单位(c是摄氏度f是华氏度)。对于中国(国外没比较)的天气查询来说,yahoo相对无论从能查到的地方还是预报的内容都是比较全的。

详细的API文档:http://developer.yahoo.com/weather/

请求xml

var url:String = "http://weather.yahooapis.com/forecastrss" + "?w=" + (location number) + "&u=" + ("c" 摄氏温度或者 "f" 华氏温度); 

 

获取地址编号

地址编号必须是一个WOEID,你可以通过雅虎的天气预报首页查询你需要的地址编号。这个编号在
你想要的那个城市天气预报页的URL中。你也可以通过在首页中输入你的邮政编码查询WOEID。例如,你想查询洛杉矶的天气情况,这个城市的天气预报页的URL是
http://weather.yahoo.com/united-states/california/los-angeles-2442047/,所以它的WOEID是2442047.

理解xml

  当你请求任何地方的天气情况时,你会接收到如下结构的xml:

<rss version="2.0" xmlns:yweather="http://xml.weather.yahoo.com/ns/rss/1.0" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#">  

    <channel>  

        <title>Yahoo! Weather - Los Angeles, CA</title>  

        <link>http://us.rd.yahoo.com/dailynews/rss/weather/Los_Angeles__CA/*http://weather.yahoo.com/forecast/USCA0638_c.html</link>  

        <description>Yahoo! Weather for Los Angeles, CA</description>  

        <language>en-us</language>  

        <lastBuildDate>Mon, 01 Mar 2010 5:47 am PST</lastBuildDate>  

        <ttl>60</ttl>  

        <yweather:location city="Los Angeles" region="CA"   country="United States"/>  

        <yweather:units temperature="C" distance="km" pressure="mb" speed="km/h"/>  

        <yweather:wind chill="12"   direction="0"   speed="0" />  

        <yweather:atmosphere humidity="80"  visibility="16.09"  pressure="1018.4"  rising="1" />  

        <yweather:astronomy sunrise="6:22 am"   sunset="5:49 pm"/>  

        <image>  

            <title>Yahoo! Weather</title>  

            <width>142</width>  

            <height>18</height>  

            <link>http://weather.yahoo.com</link>  

            <url>http://l.yimg.com/a/i/us/nws/th/main_142b.gif</url>  

        </image>  

        <item>  

            <title>Conditions for Los Angeles, CA at 5:47 am PST</title>  

            <geo:lat>34.05</geo:lat>  

            <geo:long>-118.25</geo:long>  

<link>http://us.rd.yahoo.com/dailynews/rss/weather/Los_Angeles__CA/*http://weather.yahoo.com/forecast/USCA0638_c.html</link>  

            <pubDate>Mon, 01 Mar 2010 5:47 am PST</pubDate>  

            <yweather:condition  text="Fair"  code="33"  temp="12"  date="Mon, 01 Mar 2010 5:47 am PST" />  

            <description><![CDATA[> 

            <img src="http://activetuts.s3.amazonaws.com/tuts/093_weather/Tutorial/http://l.yimg.com/a/i/us/we/52/33.gif"/><br /> 

            <b>Current Conditions:</b><br /> 

            Fair, 12 C<BR /> 

            <BR /><b>Forecast:</b><BR /> 

            Mon - Mostly Cloudy. High: 20 Low: 10<br /> 

            Tue - AM Clouds/PM Sun. High: 19 Low: 9<br /> 

            <br /> 

            <a href="http://us.rd.yahoo.com/dailynews/rss/weather/Los_Angeles__CA/*http://weather.yahoo.com/forecast/USCA0638_c.html">Full Forecast at Yahoo! Weather</a><BR/><BR/> 

            (provided by <a href="http://www.weather.com" >The Weather Channel</a>)<br/> 

            ]]></description>  

            <yweather:forecast day="Mon" date="1 Mar 2010" low="10" high="20" text="Mostly Cloudy" code="28" />  

            <yweather:forecast day="Tue" date="2 Mar 2010" low="9" high="19" text="AM Clouds/PM Sun" code="30" />  

            <guid isPermaLink="false">USCA0638_2010_03_01_5_47_PST</guid>  

        </item>  

    </channel>  

</rss><!-- api7.weather.re4.yahoo.com compressed/chunked Mon Mar  1 06:59:00 PST 2010 -->  

 

解析xml
现在你已经对这个xml有了更好的理解了,我们现在需要做的就是将这些数据指派给变量,然后用这些数据去创建我们的应用程序。
  因此我们需要创建一些变量来加载XML。下面是代码(把这些代码放在你的文档类的相关地方)。

//This is going to contain all the data from the XML  包含xml的所有数据

private var _xmlData:XML;  

//This is going to be the url of the XML that we will load  xml加载地址

private var _xmlURL:String;  

  

private function loadXML(xmlURL:String):void {  

    var loader:URLLoader = new URLLoader();  

    var request:URLRequest = new URLRequest(_xmlURL);  

  

    loader.load(request);  

    loader.addEventListener(Event.COMPLETE, loadData);  

}  

  

private function loadData(event:Event):void {  

    _xmlData = new XML(event.currentTarget.data);  

  

    var yweather:Namespace = new Namespace("http://xml.weather.yahoo.com/ns/rss/1.0");  

    var day:String = _xmlData.channel.item.yweather::forecast[0].@day;  

    var codeToday:String = _xmlData.channel.item.yweather::forecast[0].@code;  

    var codeTomorrow:String = _xmlData.channel.item.yweather::forecast[1].@code;  

}  

 

你需要把_xmlData定义到所有方法外面(即定义成成员变量),因为你在代码的任何地方都用到它,不仅仅在一个方法中。

第一个方法loadXML(),加载xml文件到Flash中;我们使用事件监听来检查xml是否加载完成,在加载完成后运行 loadData()。

loadData()方法将接收到的xml数据保存在_xmlData变量中。我们使用namespace因为雅虎决定创建他们自己的XML(你可以在livedocs.adobe.com找到更多关于命名空间的信息)。
其他的变量用于在程序中显示信息。
(想知道更多关于AS3解析xml的信息,请看Dru Kepple的AS3:101 – XML 自学材料。)
 

分享到:
评论

相关推荐

    获取雅虎天气预报API

    雅虎天气API是一个流行的API,允许开发者获取关于全球各地天气的实时信息。本文将深入探讨如何利用雅虎天气API来获取数据,并通过JSON格式解析这些数据。 首先,雅虎天气API提供了关于天气的各种信息,包括温度、...

    雅虎天气API调用

    雅虎天气API调用是开发人员获取实时天气信息的一种方式,它允许开发者通过发送特定的请求到雅虎的服务器,然后获取返回的JSON或XML格式的天气数据。这个API广泛应用于移动应用、网站或者任何需要集成天气信息的系统...

    雅虎天气预报WIDGET

    通过以上知识点的学习和实践,开发者可以创建出一款类似雅虎天气预报WIDGET的应用,为用户提供实时、准确的天气信息。对于初学者来说,这是一个很好的项目,可以帮助他们深入理解Android开发和Weather API的使用。而...

    天气预报程序

    总的来说,【天气预报程序】是通过集成雅虎天气API和VC的编程能力,创建了一个实用的天气查询工具。它体现了网络通信、数据解析和用户界面设计等多个方面的编程技巧,对于学习和理解这些技术具有很高的实践价值。

    Android天气预报实例

    【Android天气预报实例】是一个基于Java编程语言和Android操作系统开发的应用程序示例,它利用了雅虎提供的天气API来获取实时的气象数据。这个实例展示了如何在Android平台上构建一个功能完善的天气应用,其中包括...

    天气预报实例

    【天气预报实例】是一个利用雅虎天气API创建的项目,主要展示了如何通过AJAX、jQuery和JSONP技术实现一个三级联动的天气预报功能。这个实例对于初学者来说是一个很好的学习资源,可以帮助他们理解和掌握相关技术。 ...

    获取雅虎天气YahooWeatherHttp_20150827

    2. 旅游规划:结合地图服务,可以创建一个旅行规划工具,为用户提供目的地的实时天气预报,帮助他们更好地规划行程。 3. 农业管理:农民可以利用这个API监测田间气候,以便调整种植策略,减少农作物受极端天气的...

    解析雅虎天气API返回的XML数据资料.pdf

    这些信息对于开发天气相关的应用或服务非常有用,比如制作天气预报网站、移动应用或者集成到智能家居系统中,提供实时的天气信息。同时,理解如何解析XML数据也是开发者必备的技能之一,因为XML作为一种通用的数据...

    雅虎天气信息OPENPLI

    综上所述,这个压缩包提供的是一种整合了雅虎天气服务的Enigma2插件,专为Swan Black皮肤设计,让用户在享受美观界面的同时,也能轻松获取全球各地的实时天气预报。通过安装和配置包含的城市代码,用户可以自定义...

    java做的天气预报图形界面程序

    至于“雅虎天气预报”,开发者很可能使用了雅虎的开放API来获取天气数据。雅虎天气API允许开发者通过发送HTTP请求获取特定地点的天气信息,如温度、湿度、风速等。这些数据通常以JSON格式返回,然后在Java程序中解析...

    雅虎天气获取

    雅虎API的使用需要遵循其服务条款,确保合法合规地使用数据。 其次,**Android开发** 是移动应用开发的主要平台之一。在这个项目中,我们需要创建一个Android应用程序,可能是一个简单的天气查询应用。在Android中...

    Vaanilai:使用雅虎天气 API 的 Android 天气应用

    它巧妙地利用了雅虎天气API来提供用户友好的界面,显示当前和未来的天气状况。这款应用的名字“Vaanilai”在泰米尔语中意为“天气”,这表明其功能与名称完美契合,为泰米尔语地区的用户提供便利。 雅虎天气API是一...

    yahoo weather feed api应用

    在VB.NET环境下,我们可以利用这个API来创建一个天气应用,帮助用户获取所需地区的天气预报。 **RSS 文件与序列化** RSS 是一种用于发布和订阅信息的XML格式,通常用于新闻聚合或内容更新通知。在Yahoo Weather ...

    yahoo_weather_demo

    【标题】:“Yahoo天气API示例项目” 这个项目名为“Yahoo_...通过分析这个项目,我们可以学习到如何利用API获取和处理外部数据,以及如何构建一个简单的天气预报应用,这对于提升Web开发和API交互的能力非常有帮助。

    Google map+yahoo!weather-天气查询-mashup

    通过HTML(超文本标记语言)编写网页,开发者可以创建一个交互式的界面,用户可以在地图上选择位置,然后该位置的天气信息会从雅虎天气API请求并显示出来。这展示了Web开发中的AJAX(异步JavaScript和XML)技术,...

    高仿雅虎天气应用.zip

    2. **API接口使用**:雅虎天气应用获取数据通常依赖于天气API,如雅虎的Weather API或者开放天气地图等。开发者需要理解如何请求和解析JSON或其他数据格式来获取和展示天气信息。 3. **UI/UX设计**:模仿雅虎天气...

    基于Eclipse的 Android 天气查询的简单demo

    开发者可以通过运行这些测试来确保从雅虎API获取数据和解析数据的逻辑没有问题。 总的来说,这个项目涵盖了Android开发中的多个关键概念,包括网络请求、数据解析、服务以及可能的进程间通信。对于想要了解如何在...

    Weather forecast

    本文将深入探讨一个使用Visual Basic(VB)编程语言开发的天气预报系统,该系统能够获取并显示雅虎天气资源,帮助用户轻松获取最新的气象信息。 一、VB与天气预报系统的结合 Visual Basic,作为Microsoft公司推出...

    VS工具编写的一个访问雅虎天气示例源码

    这个示例可能包括了实时天气数据以及天气预报的获取方法。 在描述中提到,“获取天气信息 带预报 含有源码”,这表明该示例不仅能够获取当前的天气状况,还能够获取未来几天的天气预报。更重要的是,它提供了完整的...

    配合AJAX天气预报的webService 之asp

    由于AJAX(Asynchronous JavaScript and XML)在处理跨域请求时存在限制,尤其是在非IE浏览器中,开发者创建了一个简单的ASP Web Service来作为代理,抓取并返回雅虎天气预报的数据。这个Web Service主要的功能是从...

Global site tag (gtag.js) - Google Analytics