0

我在使用 Google 注释的时间线时遇到问题。我有这个在 jQuery 就绪函数中调用的函数(如下所示):

//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

This is because your jquery ready function is called before the google visualization script is loaded. google.setOnLoadCallback must be called like this...

    <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 回答