Javascript 定期更新谷歌图表

Javascript 定期更新谷歌图表,javascript,google-visualization,Javascript,Google Visualization,我目前有一个静态谷歌图表显示在我的网页上,我想知道是否有办法定期更新它?i、 每20秒加一分 我似乎找不到这方面的任何信息。请看一下我下面的代码 function drawAltitudeChart(){ var graph = []; downloadUrl("Map.php", function (data){ var xml = data.responseXML; var markers

我目前有一个静态谷歌图表显示在我的网页上,我想知道是否有办法定期更新它?i、 每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); 

          });
      }
函数drawAltitudeChart(){
var图=[];
下载URL(“Map.php”,函数(数据){
var xml=data.responseXML;
var markers=xml.documentElement.getElementsByTagName(“标记”);
var dataTable=new google.visualization.dataTable();
var选项={title:'海拔高度(海平面以上m)',
curveType:“函数”,
图例:{位置:'bottom'},
is3d:对
};
var图;

对于(var i=0;i而言,基于您的确切代码的简单方法是:

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

对于更深入和可定制的方法:(不过我做这件事时只掌握了Charts API的基本知识。)

函数AltitudeChart(){
this.chart=新的google.visualization.LineChart(
document.getElementById('曲线\图表')
);
}
AltitudeChart.prototype={
绘图:函数(){
var图=[];
下载URL('Map.php',函数(数据){
var xml=data.responseXML;
var markers=xml.documentElement.getElementsByTagName(“标记”);
var dataTable=new google.visualization.dataTable();
变量选项={
标题:“海拔高度(海平面以上m)”,
curveType:'函数',
图例:{位置:'bottom'},
is3d:对
};
对于(var i=0;i

我相信有一种更好的方法可以做到这一点,那就是更深入地了解Charts API,但逻辑应该是可行的。

对于每x秒添加一个新点

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

var chart = new google.visualization.LineChart(document.getElementById('chart_div'));
dataTable.addColumn('string', 'id');
dataTable.addColumn('number', 'Altitude');

var array = [];
for(var i = 0; i<graph.length; i++) {
    console.log('in loop');
    setTimeout(function(y) {
        array.push(graph[y]);
        dataTable.addRows(a);              
        chart.draw(dataTable, options); 
        array = [];
     }, i*5000, i);
}

用于(var i=0;i确切地说,您需要如何修改数据?每20秒新的点来自何处?听起来您只需要在
数据表中添加一行,然后重新绘制
图表
…?@WhiteHat-我想每20秒从我的数据库中获取一个新点…提供的答案没有帮助吗?您会使用吗
downloadUrl
Map.php
获取新的点?你在那里表现好吗(var i=0;从原始源代码来看,它看起来很适合刷新,这有点过头了,但应该可以工作,正如您所说。要求不明确。顺便说一句,我想您错过了
图形的声明。
。@WhiteHat确实错过了,谢谢。是的,可能是过头了,但如果他打算用这个方法做更多的事情,那么这个方法就可以了是个不错的选择。谢谢你的反馈。
for(var i = 0; i<markers.length; i++) {
    graph[i] = ['', parseInt(markers[i].getAttribute("alt"))];
}

var chart = new google.visualization.LineChart(document.getElementById('chart_div'));
dataTable.addColumn('string', 'id');
dataTable.addColumn('number', 'Altitude');

var array = [];
for(var i = 0; i<graph.length; i++) {
    console.log('in loop');
    setTimeout(function(y) {
        array.push(graph[y]);
        dataTable.addRows(a);              
        chart.draw(dataTable, options); 
        array = [];
     }, i*5000, i);
}