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