javascript - 定期更新谷歌图表

标签 javascript google-visualization

我目前在我的网页上显示了一个静态的谷歌图表,想知道是否有办法定期更新它?即,每 20 秒加一个点?

我好像找不到这方面的任何信息。请在下面查看我的代码

  function drawAltitudeChart(){

          var graph = [];
          downloadUrl("Map.php", function (data){
              var xml = data.responseXML;
              var markers =     xml.documentElement.getElementsByTagName("marker");
              var dataTable = new google.visualization.DataTable();
              var options = {title:'Altitude (m above sea level)', 
                  curveType:'function', 
                  legend:{position:'bottom'},
                  is3d:true     
              };
              var chart;

              for(var i = 0; i<markers.length; i++){
                  graph[i] = ['', parseInt(markers[i].getAttribute("alt"))];   
              }

              dataTable.addColumn('string', 'id');
              dataTable.addColumn('number', 'Altitude');
              dataTable.addRows(graph);


              chart = new google.visualization.LineChart(document.getElementById('curve_chart'));
              chart.draw(dataTable, options); 

          });
      }

最佳答案

基于您的确切代码的简单方法是:

(function redraw() {
    drawAltitudeChart();
    setTimeout(redraw, 20000);
})();

对于更深入和可定制的方法:(尽管我只对 Charts API 有基本的了解。)

function AltitudeChart() {
    this.chart = new google.visualization.LineChart(
        document.getElementById('curve_chart')
    );
}

AltitudeChart.prototype = {
    draw: function() {
        var graph = [];
        downloadUrl('Map.php', function(data) {
            var xml       = data.responseXML;
            var markers   = xml.documentElement.getElementsByTagName("marker");
            var dataTable = new google.visualization.DataTable();
            var options   = {
                title: 'Altitude (m above sea level)', 
                curveType: 'function', 
                legend: { position:'bottom' },
                is3d: true     
            };

            for (var i = 0; i < markers.length; i++) {
                graph[i] = ['', parseInt(markers[i].getAttribute("alt"))];   
            }

            dataTable.addColumn('string', 'id');
            dataTable.addColumn('number', 'Altitude');
            dataTable.addRows(graph);

            this.chart.draw(dataTable, options);
        });
    },

    refreshDraw: function() {
        this.drawTimeout = setTimeout(function() {
            this.draw();
            this.refreshDraw(); // recursive call
        }.bind(this), 20000);   // every 20 seconds
    }
};

new AltitudeChart().refreshDraw();

我敢肯定,如果对 Charts API 有更深入的了解,会有更好的方法来执行此操作,但逻辑应该可行。

关于javascript - 定期更新谷歌图表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32441649/

相关文章:

javascript - 无法从 ES6 中的 JSON 数组中删除 key

javascript - Google 图表 - 第 138 行 loader.js 繁忙时出现错误

javascript - 工具提示自定义不适用于 Google 图表

java - 时间戳最后带有.0

layout - 谷歌图表仪表板和 Bootstrap 行结构

javascript - 从 Google 可视化图表(表格)内部触发时,Bootstrap 弹出窗口不起作用

javascript - 如何使用 Chrome 扩展 API 拦截其他扩展的请求?

javascript - 将点击事件绑定(bind)到 td vs table

Javascript编写if语句来提示用户输入

php - 使用 Javascript/JQuery 获取 PHP 文件