Weather Report AIRの最近のブログ記事

こちらのページからダウンロードできます。
※古いバージョンをお使いの方も、先のページから再度INSTALL NOWアイコンを押すと、バージョンアップできます。

アプリケーション本体は、約1000行ほどの規模ですが、結構色々なことが実現できています。AIRの実力ですね。ちなみにLWWSの処理は、真面目にライブラリ化したので約900行ほどです。

また、今回もLinuxの対応で、結構時間がかかってしまいました。。。
具体的には、コンテキストメニューの応答の違いや、フォント、GlowFilterのかかり具合の微妙な差違です。最終的には、Windowsで実行した場合に最も奇麗に見えるような状態で断念しました。。。

お天気Webサービスを使用する際に必要な「地域別に定義されたID番号」については、ハードコーディングするのでなく、RSS(全国の地点定義表)から取得するのがよいでしょう。

例えば、Action Script 3(AS3)では、以下のように記述します。

private function hoge():void
{
    var url:String = "http://weather.livedoor.com/forecast/rss/forecastmap.xml";
    var urlRequest:URLRequest = new URLRequest(url);
    var urlLoader:URLLoader = new URLLoader(urlRequest);
    
    urlLoader.addEventListener(Event.COMPLETE, onUrlLoaderComplete);
    urlLoader.load(urlRequest);
}

private function onUrlLoaderComplete(event:Event):void
{
    var urlLoader:URLLoader = event.currentTarget as URLLoader;
    var xml:XML = new XML(urlLoader.data);

    // コメントは、出力結果(参考)です
    var ldWeatherNS:Namespace = xml.namespace("ldWeather");
    
    for each (var xmlChannel:XML in xml.channel)
    {
        for each (var xmlSource:XML in xmlChannel.ldWeatherNS::source)
        {
            for each (var xmlArea:XML in xmlSource.area)
            {
                for each (var xmlPref:XML in xmlArea.pref)
                {
                    for each (var xmlCity:XML in xmlPref.city)
                    {
                        trace(parseInt(xmlCity.@id) + ":" +
                            xmlArea.@title + "-" +
                            xmlPref.@title + "-" +
                            xmlCity.@title);
// 1:北海道地方-道北-稚内
// 2:北海道地方-道北-旭川
// 3:北海道地方-道北-留萌
// ...
// 141:南西諸島地方-沖縄県-石垣島
// 142:南西諸島地方-沖縄県-与那国島
                    }
                }
            }
        }
    }
}

結果のXMLデータには、IDとともに、area(北海道地方など)、pref(道北)、city(稚内)などの情報も格納されています。

※Weather Report AIR参照

天気予報情報を取得するには、お天気Webサービス仕様で定義されたURLに対してURLRequestを作成し、URLLoaderで読み込みます。

例えば、「明日の福岡県・久留米の天気」を取得する場合、Action Script 3(AS3)では、以下のように記述します。

private function hoge():void
{
    var url:String = "http://weather.livedoor.com/forecast/webservice/rest/v1" +
        "?city=113&day=tomorrow";
    var urlRequest:URLRequest = new URLRequest(url);
    var urlLoader:URLLoader = new URLLoader(urlRequest);
    
    urlLoader.addEventListener(Event.COMPLETE, onUrlLoaderComplete);
    urlLoader.load(urlRequest);
}

private function onUrlLoaderComplete(event:Event):void
{
	var urlLoader:URLLoader = event.currentTarget as URLLoader;
	var xml:XML = new XML(urlLoader.data);

	// コメントは、出力結果(参考)です
	trace(xml.title);	// "福岡県 久留米 - 明日の天気"
	trace(xml.telop);	// "晴れ"
	trace(xml.temperature.max.celsius); // "12"
	trace(xml.temperature.min.celsius);	// "2"
	trace(xml.image.url);	// "http://image.weather.livedoor.com/img/icon/1.gif"
}

URLLoaderによる読み込みが完了すると、URLLoader.dataにtextデータが格納されますので、XMLクラスのコンストラクタに渡して作成することで、XMLデータを得ることができます。

天気アイコンのURLは、xml.image.urlにありますので、mx:Image.sourceにセットすれば、天気アイコンを表示することができます。

※Weather Report AIR参照

Livedoor Weather Web Service(LWWS)を利用した天気予報表示AIRアプリケーションを公開しました。

こちらのページからダウンロードできます。

実行イメージは、こんな感じです。

wra_sample.png

 

1

2016年8月

  1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31