2011-01-05 10 views
1

Ich erstelle eine Flex3-Anwendung, um einige Ergebnisse aus der Google Geocoding API zurückzugeben.HTTPService Problem beim Zurückgeben von GeoCode-Ergebnissen an DataGrid

Ich verwende das HTTPService Events-Beispiel von TourDeFlex als Referenzhandbuch zum Nachahmen.

Vorerst habe ich die Antwort von Google fest einprogrammiert diese XML-Antwort zu verwenden: maps.googleapis.com/maps/api/geocode/xml?address=1600+Amphitheatre+Parkway,+Mountain+View,+CA&sensor=false

Network Monitor schlägt vor, dass ich eine gültige Antwort von der XML bin immer, aber ich glaube, ich habe es nicht korrekt verwiesen wird für mein DataGrid füllen?

Ich habe das Problem here screencasted.

Hier ist eine abgespeckte Version von meinem Code:

private function resultHandler(event:ResultEvent):void 
     { 
     results = event.result.GeocodeResponse.result; 
     } 

     private function faultHandler(event:FaultEvent):void 
     { 
     Alert.show(event.fault.faultDetail, "Error"); 
     }   

    ]]> 
</mx:Script> 

<mx:HTTPService id="srv" 
      url="http://maps.googleapis.com/maps/api/geocode/xml?address=1600+Amphitheatre+Parkway,+Mountain+View,+CA&amp;sensor=false" 
     result="resultHandler(event)" 
      fault="faultHandler(event)"/> 

<mx:TitleWindow title="Find" showCloseButton="true" close="closeMe();" 
      styleName="formPanel" horizontalScrollPolicy="off" verticalScrollPolicy="off" 
      width="400" height="200"> 

    <mx:DataGrid dataProvider="{results}" width="100%" height="100%"> 
     <mx:columns> 
     <mx:DataGridColumn dataField="type" headerText="Address"/> 
     </mx:columns> 
    </mx:DataGrid> 

    <mx:Button label="Go" height="20" styleName="buttonGo" click="srv.send()"/> 
</mx:TitleWindow> 

Antwort

2

hatte einen Blick auf die xml. Es könnte sein, dass das erste Auftreten von Typ auf einem Top-Level ist, aber von diesem Zeitpunkt an ist Typ ein Element von address_component.

Vielleicht versuchen address_component.type als das Datenfeld der DataGridColumn? Oder setzen Sie den Datenprovider auf results.address_component?

bearbeiten aktualisieren

Weil seine Lese XML, vielleicht resultFormat="e4x" innerhalb des <HttpService ..> Tag gesetzt und haben eine XMLListCollection das Ergebnis erwarten:

<mx:XMLListCollection id="xc" source="{srv.lastResult.result}"/> 

<mx:DataGrid id="dg" dataProvider="{xc}"> 

Im Debug-Modus, eine Uhr auf XC auf Stellen Sie sicher, dass es bevölkert ist

+0

Ich denke, der DataProvider (Ergebnisse) ist das Array delcared früher (nicht im Code) - [Bindable] private var Ergebnisse: ArrayC ollection; – Simon

+0

Ich glaube auch nicht, dass ich bis zur Ebene address_component bohren sollte. Die Elemente, die ich von der Antwort brauche, sind lon/lat, sowie die formatierte_Adresse. Aus wie lese ich die XML, fallen beide außerhalb der address_component? – Simon

+0

Die Zeile im Gespräch ist . Warum 'type' die Datendatei? – Ryan

Verwandte Themen