2012-06-19 55 views
0

我在註釋Google註釋時出現問題。我有這個功能(如下圖所示),被稱作jQuery的準備功能:在應用程序啓動時不顯示Google註釋的時間線

//creates an annotated timeline 
function graphAnnotatedTimeLine(url) { 
    jQuery.get(url, function(returned_data) { 
     //parse returned_data ... 

     //build data table 
     var dataTable = new google.visualization.DataTable(); 
     dataTable.addColumn('datetime', columnHeadings[0]); 
     dataTable.addColumn('number', columnHeadings[1]); 

     //populate table 
     for(var i = 0; i < rawData.length; i++) { 
      var parsedData = data[i].split(","); 
      dataTable.addRow([new Date(parsedData[0]), parseFloat(parsedData[1])]); 
     } 

     //draw graph 
     var options = {displayAnnotations: false, 
         allowRedraw: true, 
         legendPosition: 'newRow', 
         displayZoomButtons: false, 
         wmode: 'transparent'}; 

     var chart = new google.visualization.AnnotatedTimeLine(document.getElementById('chart-div')); 
     chart.draw(dataTable, options); 
    }); 
} 

就緒函數調用爲:

$.ready(function() { 
    //generate url string 
    google.setOnLoadCallback(graphAnnotatedTimeline(url)); 
    self.setInterval('updateGraph', 60000); 
    //more stuff 
}); 

所以在準備我把它繪製第一套的數據,然後設置一個更新函數,每分鐘調用一次。所有更新函數與ready函數基本相同:構建一個url字符串並使用該url調用圖函數。我遇到的問題是它在啓動時不顯示的圖形。一旦更新被調用一次,它會在此後顯示正常。有沒有人能爲我發生這種事情而發生一些事情?

回答

0

這是因爲您的jquery ready函數在加載谷歌可視化腳本之前調用。 google.setOnLoadCallback必須這樣調用...

<script type="text/javascript" src='http://www.google.com/jsapi?autoload={"modules":[{"name":"visualization","version":"1","packages":["annotatedtimeline"]}]}'></script> 
    <script type="text/javascript"> 
     google.setOnLoadCallback(graphAnnotatedTimeline(url)); 
</script> 
+0

嗯確定,所以它是順序的問題?因此,我必須將所有數據設置在ready函數之外或閉包中(因爲我知道它在函數退出後似乎不會保存值),那麼調用onLoadCallback?我有點懷疑它與訂單有關,但我並不完全確定。謝謝。 – Perley

相關問題