기타 구글날씨API를 이용한 날씨정보유틸

2008.09.21 02:58

juro 조회 수:1417

http://junelife.tistory.com/37----------------------------------------------------------------------------------------
<?xml version="1.0" encoding="utf-8"?>
<mx:WindowedApplication xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" creationComplete="selectCity()" fontFamily="Arial" fontSize="11" width="100%" height="100%" viewSourceURL="srcview/index.html">
    <mx:Script>
        <![CDATA[
            import mx.rpc.events.FaultEvent;
            import mx.rpc.events.ResultEvent;
            import mx.utils.ArrayUtil;
            import mx.collections.ArrayCollection;
            import mx.controls.Alert;
            import mx.rpc.http.HTTPService;
            
            private function selectCity():void {
                var curCity:String = cbCity.selectedItem.data;
                
                var svHTTP:HTTPService = new HTTPService();
                
                svHTTP.url = "http://www.google.co.kr/ig/api?weather=" + curCity;
                
                svHTTP.addEventListener(ResultEvent.RESULT, resultHandler);
                svHTTP.addEventListener(FaultEvent.FAULT, faultHandler);
                svHTTP.send();
            }
            
            public function resultHandler(event:ResultEvent):void {
                var resultAC:ArrayCollection = (event.result.xml_api_reply.weather is ArrayCollection) ?
                            event.result.xml_api_reply.weather as ArrayCollection :
                            new ArrayCollection(ArrayUtil.toArray(event.result.xml_api_reply.weather));
                            
                if(resultAC.getItemAt(0).problem_cause != null) {
                    Alert.show(resultAC.getItemAt(0).problem_cause.data);
                    
                    curInfo.text = "";
                    curIcon.load(null);
                } else {
                    // 현재 날씨 정보
                    currentWeatherInfo(resultAC.getItemAt(0));
                    
                    // 오늘 날씨 정보
                    todayDispWeatherInfo(resultAC.getItemAt(0));
                    
                    // 다음 날씨 정보
                    next1DispWeatherInfo(resultAC.getItemAt(0));
                    
                    // 이틀 째 날씨 정보
                    next2DispWeatherInfo(resultAC.getItemAt(0));
                    
                    // 삼일째 날씨 정보 Display
                    next3DispWeatherInfo(resultAC.getItemAt(0));
                }
            }
            
            // 현재 날씨 정보 Display
            private function currentWeatherInfo(params:Object):void {
                var txtValue:String = "";
                
                txtValue = txtValue + "현재 : " + params.current_conditions.condition.data;
                txtValue = txtValue + ", " + params.current_conditions.temp_c.data + "℃";
                txtValue = txtValue + ", " + params.current_conditions.humidity.data;
                txtValue = txtValue + ", " + params.current_conditions.wind_condition.data;
                
                curInfo.text = txtValue;
                curIcon.load("http://www.google.co.kr/ig" + params.current_conditions.icon.data);
            }
            
            // 오늘 날씨 정보 Display
            private function todayDispWeatherInfo(params:Object):void {
                lbToday.text = params.forecast_conditions[0].day_of_week.data;
                
                todayIcon.load("http://www.google.co.kr/ig" + params.forecast_conditions[0].icon.data);
                todayIcon.toolTip = params.forecast_conditions[0].condition.data;
                
                lbTodayTemp.text = params.forecast_conditions[0].low.data + "℃ | " + params.forecast_conditions[0].high.data + "℃";
            }
            
            // 다음 날씨 정보 Display
            private function next1DispWeatherInfo(params:Object):void {
                lbNext1.text = params.forecast_conditions[1].day_of_week.data;
                
                next1Icon.load("http://www.google.co.kr/ig" + params.forecast_conditions[1].icon.data);
                next1Icon.toolTip = params.forecast_conditions[1].condition.data;
                
                lbNext1Temp.text = params.forecast_conditions[1].low.data + "℃ | " + params.forecast_conditions[1].high.data + "℃";
            }
            
            // 이틀째 날씨 정보 Display
            private function next2DispWeatherInfo(params:Object):void {
                lbNext2.text = params.forecast_conditions[2].day_of_week.data;
                
                next2Icon.load("http://www.google.co.kr/ig" + params.forecast_conditions[2].icon.data);
                next2Icon.toolTip = params.forecast_conditions[2].condition.data;
                
                lbNext2Temp.text = params.forecast_conditions[2].low.data + "℃ | " + params.forecast_conditions[2].high.data + "℃";
            }
            
            // 삼일째 날씨 정보 Display
            private function next3DispWeatherInfo(params:Object):void {
                lbNext3.text = params.forecast_conditions[3].day_of_week.data;
                
                next3Icon.load("http://www.google.co.kr/ig" + params.forecast_conditions[3].icon.data);
                next3Icon.toolTip = params.forecast_conditions[3].condition.data;
                
                lbNext3Temp.text = params.forecast_conditions[3].low.data + "℃ | " + params.forecast_conditions[3].high.data + "℃";
            }
            
            public function faultHandler(event:FaultEvent):void {
                Alert.show(event.fault.message);
            }
        ]]>
    </mx:Script>
    <mx:Model id="cityData">
        <Cities>
            <City label="서울" data="Seoul"/>
            <City label="대구" data="Daegu"/>
            <City label="부산" data="Busan"/>
            <City label="광주" data="GwangJu"/>
            <City label="대전" data="Daejeon"/>
            <City label="전주" data="Jeonju"/>
            <City label="원주" data="Wonju"/>
            <City label="청주" data="Chungju"/>
            <City label="포항" data="Pohang"/>
            <City label="성남" data="Songnam"/>
            <City label="수원" data="Suwon"/>
            <City label="상주" data="Sangju"/>
            <City label="김해" data="Gimhae"/>
            <City label="인천" data="Incheon"/>
            <City label="울산" data="Ulsan"/>
            <City label="창원" data="Changwon"/>
            <City label="천안" data="Cheonan"/>
            <City label="안양" data="Anyang"/>
            <City label="안산" data="Ansan"/>
            <City label="춘천" data="Chuncheon"/>
            <City label="제주" data="Jeju"/>
            <City label="여수" data="Yeosu"/>
            <City label="안동" data="Andong"/>
            <City label="양산" data="Yangsan"/>
            <City label="태안" data="Taean"/>
            <City label="진주" data="Jinju"/>
            <City label="진해" data="Chinhae"/>
            <City label="의정부" data="Uijongbu"/>
            <City label="평택" data="Pyongtaek"/>
            <City label="오산" data="Osan"/>
            <City label="순천" data="Sunchon"/>
            <City label="당진" data="Dangjin"/>
            <City label="마산" data="Masan"/>
            <City label="군산" data="Gunsan"/>
            <City label="목포" data="Mokpo"/>
            <City label="동해" data="Tonghae"/>
            <City label="구미" data="Gumi"/>
            <City label="삼척" data="Samchok"/>
        </Cities>
    </mx:Model>
    <mx:ArrayCollection id="myAC" source="{ArrayUtil.toArray(cityData.City)}"/>
    <mx:ComboBox x="10" y="10" width="81" enabled="true" id="cbCity" dataProvider="{myAC}" change="selectCity()"></mx:ComboBox>
    <mx:Button x="99" y="11" label="Refresh Weather Info" id="btnRefresh" enabled="true" click="selectCity()"/>
    <mx:TextInput x="10" y="42" width="283" id="curInfo" editable="false" enabled="true"/>
    <mx:VBox x="10" y="85" height="107" width="67">
        <mx:Label width="100%" enabled="true" textAlign="center" id="lbToday"/>
        <mx:Image id="todayIcon" verticalAlign="middle" horizontalAlign="center" width="66"/>
        <mx:Label width="100%" textAlign="center" id="lbTodayTemp"/>
    </mx:VBox>
    <mx:Image x="301" y="34" id="curIcon"/>
    <mx:VBox x="85" y="85" height="107" width="67">
        <mx:Label id="lbNext1" enabled="true" width="100%" textAlign="center"/>
        <mx:Image id="next1Icon" width="66" horizontalAlign="center" verticalAlign="middle"/>
        <mx:Label id="lbNext1Temp" width="100%" textAlign="center"/>
    </mx:VBox>
    <mx:VBox height="107" width="67" x="160" y="85">
        <mx:Label id="lbNext2" enabled="true" width="100%" textAlign="center"/>
        <mx:Image id="next2Icon" width="66" horizontalAlign="center" verticalAlign="middle"/>
        <mx:Label id="lbNext2Temp" width="100%" textAlign="center"/>
    </mx:VBox>
    <mx:VBox height="107" width="67" x="235" y="85">
        <mx:Label id="lbNext3" enabled="true" width="100%" textAlign="center"/>
        <mx:Image id="next3Icon" width="66" horizontalAlign="center" verticalAlign="middle"/>
        <mx:Label id="lbNext3Temp" width="100%" textAlign="center"/>
    </mx:VBox>
</mx:WindowedApplication>
----------------------------------------------------------------------------------------



© juroweb 2003-2014. All rights reserved
log in