0

Google の注釈付きタイムラインに問題があります。jQuery ready 関数で呼び出されるこの関数 (以下に示す) があります。

//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
});

したがって、準備ができたら、それを呼び出して最初のデータ セットを描画し、更新関数を毎分呼び出すように設定します。update 関数が行うことは基本的に ready 関数と同じです: URL 文字列を作成し、その URL でグラフ関数を呼び出します。私が抱えている問題は、起動時にグラフが表示されないことです。ただし、更新が一度呼び出されると、その後は正常に表示されます。なぜこれが起こっているのかについて、私にいくつかの洞察を与えることができる人はいますか?

4

1 に答える 1

0

これは、Googleの視覚化スクリプトが読み込まれる前にjqueryready関数が呼び出されるためです。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>
于 2012-06-20T07:03:44.307 に答える