1

我正在构建一个 Web 应用程序,它使用 Yahoo Weather API 根据用户提供的邮政编码提供天气信息。

我知道为了在一定天数内获取此数据,我必须将其作为参数添加到我的请求中,如下所示:

http://weather.yahooapis.com/forecastrss?p=33035&u=c&d=3

这给出了这个结果:

<channel>
....
<yweather:location city="Homestead" region="FL" country="US"/>
<yweather:units temperature="C" distance="km" pressure="mb" speed="km/h"/>
<yweather:wind chill="19" direction="90" speed="11.27"/>
<yweather:atmosphere humidity="78" visibility="16.09" pressure="1021" rising="1"/>
<yweather:astronomy sunrise="7:12 am" sunset="7:36 pm"/>
...
<item>
...
<yweather:forecast day="Wed" date="2 Apr 2014" low="19" high="28" text="Mostly Sunny" code="34"/>
<yweather:forecast day="Thu" date="3 Apr 2014" low="21" high="29" text="Partly Cloudy" code="30"/>
<yweather:forecast day="Fri" date="4 Apr 2014" low="20" high="28" text="Partly Cloudy" code="30"/>
<guid isPermaLink="false">USFL0208_2014_04_04_7_00_EDT</guid>
</item>
</channel>

但是,我需要能够在预测中获得每天的湿度水平,不仅仅是当前的湿度水平。我试图在这里找到解决方案并阅读 Yahoo API 文档,但它确实很短。

我也尝试过http://www.myweather2.com/http://developer.worldweatheronline.com/,但它们在湿度方面也有同样的问题 - 它仅在当天显示,并从整个预测中删除。

我会继续尝试使用其他免费的 Weather API,但如果您能在这里提供帮助,我将非常感激。

4

1 回答 1

1

我花了一些时间研究比 Yahoo! 更好的 API!Weather API 和我发现了一些对我有用的东西,所以我决定分享这些信息,以防有一天其他人碰到这个问题。

预测 API的第 2 版看起来是一个不错的解决方案,因为它提供了详细的信息,更具体地说是预测中每天的湿度指数,这正是我首先要寻找的。该 API 也有许多库(语言包括 PHP、Node.js、Python、Perl 等)。

它适用于经度和纬度,如本例所示

https://api.forecast.io/forecast/APIKEY/LATITUDE,LONGITUDE,TIME

当然,还需要注册一个 API 密钥。TIME参数是可选的,温度默认使用华氏度数,但可以通过附加参数进行
更改。?units=ca

一个缺点是您每天只能获得 1,000 个免费电话,这可能不适合大型应用程序。

如果您知道原始问题的更好答案,我会很高兴听到它。在那之前,我将使用这个解决方案,而不涉及太多细节:

// The default result from a Forecast API call is in JSON,
// so decode it to an object for easier access
$fcObj = json_decode($jsonResult);

if(!empty($fcObj->daily->data[0]->humidity)) {

    // get humidity value in %
    $humidty = $fcObj->daily->data[0]->humidity * 100;

}
于 2014-04-17T13:07:56.610 回答