2014-09-10 77 views
0

我正在使用谷歌图表API绘制区域图表。 该图表代表高度剖面,当我将鼠标移过该图表时,它会显示底层数据表的位置(lat和long)。google areachart无法访问数据表行

所以我创造了我的图表:

data = new google.visualization.DataTable(json); 
chart = new google.visualization.AreaChart(document.getElementById("chart-output")); 

,并绘制它:

chart.draw(data, options); 

并添加处理鼠标悬停事件

当事件触发,我想要得到的来自底层数据源的行

if (event.row != null && event.column != null){ 

    //data is the chart datasource 
    var o = data.D[event.row]; 
    var sel_x = o.c[0]["coords"]["x"]; 
    var sel_y = o.c[0]["coords"]["y"]; 

    ... //show x, y 
} 

问题是,去年项目首次发布时,一切正常,data.D实际上包含了期望值。 但现在,我发现相同的属性是未定义的,行数组可以在属性data.tf中找到。

我希望通过getter方法获得对数据源行的访问权限,但我找不到合适的。数据表方法ǵetRowProperties(rowIndex)不提供任何内容。

我在做什么错?

感谢和问候

**编辑** 12/09

@Juvian 感谢答复年,但它是比这更复杂一些。 我的数据源是这样的:

{"cols": 
    [ 
    {"id":"distance","label":"Distance","type":"number"}, 
    {"id":"asfaltocemento","label":"Asphalt/Beton","type":"number"}, 
    {"id":"rocciaghiaia","label":"Fels/Schotter","type":"number"}, 
    {"id":"ghiaccio","label":"Eis","type":"number"}, 
    {"id":"terraprato","label":"Erde/Wiese","type":"number"}, 
    {"id":"sassolastricato","label":"Stein/Pflaster","type":"number"}, 
    {"id":"sconosciuto","label":"Unbekannt","type":"number"}], 
    "rows": 
    [ 
    {"c":[{"v":0,"coords":   {"x":1296400.1245177952,"y":5885847.104437432,"z":1345.275458520788,"segment_no":0}},{},{"v":1345.275458520788},{},{},{},{}]}, 
    {"c":[{"v":2.8740587294156668,"coords":{"x":1296395.9416741736,"y":5885847.412533606,"z":1345.4754191288682,"segment_no":0}},{},{"v":1345.4754191288682},{},{},{},{}]}, 
    {"c":[{"v":17.583008965075226,"coords":{"x":1296374.532888888,"y":5885848.966197753,"z":1346.3169989102385,"segment_no":0}},{},{"v":1346.3169989102385},{},{},{},{}]}, 
    {"c":[{"v":23.830815143830804,"coords":{"x":1296365.4205057025,"y":5885849.273363226,"z":1346.724445260275,"segment_no":0}}, {},{"v":1346.724445260275},{},{},{},{}]}, 

    .... 
    ]} 

当我从图形事件,我检索所需的值是这样的:

var o = data.tf[event.row]; 
var sel_x = o.c[0]["coords"]["x"]; 
var sel_y = o.c[0]["coords"]["y"]; 

我知道这不是财产使用一个很好的做法(TF ),我应该使用getValue()之类的访问器,但是使用getValue方法我无法访问'coords'对象及其子对象。

任何帮助将不胜感激

回答

0

嘛,data.d不是一个公共方法,所以谷歌可以更改,你应该使用公共方法,而不是一致性。

试试这个:

var sel_x = data.getValue(event.row, 0); // supposing your x value is in fisrt column 
var sel_y = data.getValue(event.row, 1); // supposing your y value is in second column 

此处了解详情:Google DataTable