2013-05-31 2 views
0

AS3 코드가 잘못 작성되어 Google Maps Api에서 XML 데이터를 검색하고 노드/문자열을 검색해야합니다. 일어나지 않습니다. XML 데이터를 변수 값으로 사용하여 그 자식 노드와 자식 노드를 가져 와서 배열에 배치해야합니다 (내 트윗 XML 데이터와 비슷합니다). 사전에Geocode Api의 XML을 AS3의 XML로 변환 할 수 없습니다

package app 
{ 
    import flash.xml.XMLDocument; 
    import flash.net.URLLoader; 
    import flash.net.URLRequest; 
    import flash.events.Event; 
    import flash.display.MovieClip; 

    public class main extends MovieClip 
    { 
     public var geoReq:URLRequest = new URLRequest; 
     public var geoLoader:URLLoader = new URLLoader(); 
     public var geoXml:XML = new XML(); 
     public var geoLocList:XMLList = new XMLList(); 
     public var geoLoc:Array = new Array(); 
     public function main():void 
     { 
      geoLoader.addEventListener(Event.COMPLETE, locate); 
      var urlReq:URLRequest = new URLRequest("http://search.twitter.com/search.atom?q=flu&rpp=3&lang=en&geocode=55.378051,-3.435973,605mi"); 
      var loader:URLLoader = new URLLoader(); 
      loader.addEventListener(Event.COMPLETE, getTweets); 
      loader.load(urlReq); 
     } 
     function getTweets(e:Event):void 
     { 
      loadGeo("UK"); 
      if (e.target.data) 
      { 
       var tweets = new Array(); var times = new Array(); 
       var twitterXML:XML = new XML(e.target.data); 
       var tweetList:XMLList = twitterXML.children(); 
       var tweetItem:String; 
       var placeItem:String; 
       var tweet:Array = new Array(); 
       for (var i:int = 0; i < tweetList.length(); i++) 
       { 
        tweetItem = tweetList[i].*::title; 
        placeItem = tweetList[i].*::location; 
        if(tweetItem && placeItem != "") 
        { 
        tweet = [tweetItem, placeItem]; 
        tweets.push(tweet); 
        trace(tweets[tweets.length - 1][0]); 
        trace(tweets[tweets.length - 1][1]); 
        } 
       } 
       trace(tweets.length); 
      } 
     } 
     function loadGeo(loc:String):void 
     { 
      geoReq = new URLRequest("https://maps.googleapis.com/maps/api/geocode/xml?address=" + loc + "&sensor=false"); 
      geoLoader.load(geoReq); 
     } 
     function locate(e:Event):void 
     { 
      geoXml = e.target.data; 
      //geoLocList = geoXml.children(); 
      //geoLoc = [geoLocList[0].*::lat, geoLocList[0].*::lng]; 
      trace("located"); 
      trace(e.target.data); 
      //trace(geoXml); 
      trace("located"); 
     } 
    } 
} 

이 도와주세요, 감사, 카일 :

RT @StonesGotStyle: Feeling terrible, darn you flu! This may be the only way to make me feel better! http://t.co/RJLEog6c8c So awesome! @OM… 
Majulah Singapura 
have the worst heyfever, and coming down with a flu whilst having guests round and I need to revise is the worst scenario ** 
London 
2 
TypeError: Error #1034: Type Coercion failed: cannot convert "<?xml version="1.0" encoding="UTF-8"?> 
<GeocodeResponse> 
<status>OK</status> 
<result> 
    <type>country</type> 
    <type>political</type> 
    <formatted_address>United Kingdom</formatted_address> 
    <address_component> 
    <long_name>United Kingdom</long_name> 
    <short_name>GB</short_name> 
    <type>country</type> 
    <type>political</type> 
    </address_component> 
    <geometry> 
    <location> 
    <lat>55.3780510</lat> 
    <lng>-3.4359730</lng> 
    </location> 
    <location_type>APPROXIMATE</location_type> 
    <viewport> 
    <southwest> 
    <lat>49.8669688</lat> 
    <lng>-8.6493572</lng> 
    </southwest> 
    <northeast> 
    <lat>60.8565530</lat> 
    <lng>1.7627096</lng> 
    </northeast> 
    </viewport> 
    <bounds> 
    <southwest> 
    <lat>34.5640831</lat> 
    <lng>-8.6493572</lng> 
    </southwest> 
    <northeast> 
    <lat>60.9113448</lat> 
    <lng>33.9165549</lng> 
    </northeast> 
    </bounds> 
    </geometry> 
</result> 
</GeocodeResponse> 
" to XML. 
    at app::main/locate() 
    at flash.events::EventDispatcher/dispatchEventFunction() 
    at flash.events::EventDispatcher/dispatchEvent() 
    at flash.net::URLLoader/onComplete() 

그리고 내 코드 : 이것은 내 출력됩니다.

답변

0

결과가 String이므로 다시 String을 기반으로 새 XML 객체를 만들어야합니다. 당신의 locate() 방법 변화에

이 라인 :

geoXml = e.target.data; 

사람 :

geoXml = new XML(e.target.data);