2011-01-05 64 views
1

我正在創建Flex3應用程序以返回Google Geocoding API的一些結果。HTTPService將GeoCode結果返回給DataGrid

我使用TourDeFlex的HTTPService事件樣本作爲模擬的參考指南。

現在,我已經硬編碼了來自谷歌的響應使用此XML響應: maps.googleapis.com/maps/api/geocode/xml?address=1600+Amphitheatre+Parkway,+Mountain+View,+CA&sensor=false

網絡監視器顯示,我正在從XML有效的響應,但我想我還沒有正確地引用它填充我的DataGrid?

我已經屏蔽了問題here

這裏是我的代碼一個精簡版:

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> 

回答

2

了看看XML。可能是類型的第一次出現處於頂層,但從此類型address_component的元素。

也許試試address_component.type作爲DataGridColumn的數據字段?或者將dataprovider設置爲results.address_component?

編輯更新

由於其讀取XML,也許設定resultFormat="e4x"<HttpService ..>標籤內,並具有爲XMLListCollection等待結果:

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

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

在調試模式下,XC設置觀測到確保它被填充

+0

我認爲DataProvider(結果)是早期的數組(不在代碼中) - [Bindable] private var results:ArrayC ollection; – Simon 2011-01-06 04:14:28

+0

我也不認爲我應該深入到address_component級別。 我從響應中需要的項目是lon/lat以及formatted_address。從我如何閱讀XML中,這兩者都不在address_component之外? – Simon 2011-01-06 04:15:36

+0

我在談論的線是。爲什麼'鍵入'數據文件? – Ryan 2011-01-06 09:00:33

相關問題