首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >谷歌图表-图表为空白

谷歌图表-图表为空白
EN

Stack Overflow用户
提问于 2015-09-01 15:05:33
回答 2查看 555关注 0票数 5

使用mysql/php/js尝试显示一个曲线图--目前正在显示该图表,但它是空白的。

代码语言:javascript
复制
google.load('visualization', '1.0', {'packages':['corechart']});

      google.setOnLoadCallback(drawChart);


      function drawChart() {

        var graph = Array();
        downloadUrl("map.php", function (data){
        var xml = data.responseXML;
        var markers = xml.documentElement.getElementsByTagName("marker");
        for(var i =0; i<markers.length; i++){ 
           graph.push([i], [markers[i].getAttribute["alt"]]);
        }   

    });

      var data = google.visualization.arrayToDataTable(graph);
      data.addColumn('number', 'id');
      data.addColumn('number', 'Altitude');

        var options = {
          title: 'Altitude',
          curveType: 'function',
          legend: { position: 'bottom' }
        };

        var chart = new google.visualization.LineChart(document.getElementById('curve_chart'));

        chart.draw(data, options);
      }

downloadURL是一种从我的数据库中检索信息的方法--查找高度并简单地绘制它。该方法肯定工作正常,因为我也使用它来添加标记到谷歌地图.

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-09-02 01:10:22

有几个问题(除了亨里克的答案外)

  1. 您必须在downLoadUrl回调中绘制图表
  2. getAttribute是一种方法,它必须是markers[i].getAttribute("alt")
  3. 必须将高度转换为数字,目前它是一个字符串(xml-属性总是字符串类型)
  4. 您使用push的方式是错误的,对每个标记添加2行,对id添加1,对于高度添加1。

固定代码:

代码语言:javascript
复制
function drawChart() {

  var graph =  [];
  downloadUrl("map.php", function (data){
      var xml     = data.responseXML,
          graph   = [],
          markers = xml.documentElement.getElementsByTagName("marker"),
          //create empty datatable
          data    = new google.visualization.DataTable(),
          options = {
                      title: 'Altitude',
                      curveType: 'function',
                      legend: { position: 'bottom' }
                    },
          chart;
      for(var i = 0; i<markers.length; i++){ 
        graph.push(//a single array(row) with 2 items(columns)
                   [
                    //column 0, id(index) of the marker
                    i,
                    //column 1, alt-attribute, converted to float
                    parseFloat(markers[i].getAttribute("alt"))
                   ]
                  );
      }
      //first add columns to the datatable
      data.addColumn('number', 'id');
      data.addColumn('number', 'Altitude');
      //then add the rows
      data.addRows(graph);

      chart = new google.visualization.LineChart(document.getElementById('curve_chart'));
      chart.draw(data, options);   
  });
}
票数 1
EN

Stack Overflow用户

发布于 2015-09-01 20:30:46

我相信您要么使用arrayToDataTable错误,要么您的输入格式化错误。

查看arrayToDataTable文档,数组应该包含您的列名等等,您根本不应该使用data.addCoulmn()

数组的正确格式应该是:

代码语言:javascript
复制
array = [
    [{label:'ID', type:'number'},{label:'Altitude',type:'number'}],
    [1,15],
    [2,23]
]
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32335037

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档