Google api GoogleJSAPI:为标记添加不可见数据

Google api GoogleJSAPI:为标记添加不可见数据,google-api,google-visualization,Google Api,Google Visualization,我需要添加一个“不可见”列,它将在选择时触发 比如: var data = new google.visualization.DataTable(); data.addColumn('number', 'Lat'); // Latitude Value data.addColumn('number', 'Lon'); // Longitude Value data.addColumn('string', 'Name'); // data.addColumn('number'

我需要添加一个“不可见”列,它将在选择时触发

比如:

  var data = new google.visualization.DataTable();
  data.addColumn('number', 'Lat'); // Latitude Value
  data.addColumn('number', 'Lon'); // Longitude Value
  data.addColumn('string', 'Name'); // 
  data.addColumn('number', 'Consumer Price Index (CPI)', 'Value'); // 
  data.addColumn('string', 'Invisible'); // 
后来:

  google.visualization.events.addListener(geomap, 'select', function() {
      var selection = geomap.getSelection()[0];
      window.location = selection[4];
  });
加载地图时收到错误消息:

Incompatible data table: Error: Table contains more columns than expected (Expecting 4 columns)
所以看起来DataTable不接受我的不可见列


知道如何解决这个问题吗?

虽然我还没有找到问题的答案,但我找到了一种不使用DataView的解决方法(数据转换可能会很慢),因此可能会快得多

我以与主数据表相同的顺序创建了另一个包含附加数据(变量
hrefs
)的数组,我在事件中使用它的方式如下:

google.visualization.events.addListener(chart, 'select', function() {
    var selection = chart.getSelection();
    var row = selection[0].row;
    window.location = hrefs[row];
});

它至少在Chrome中工作;-)

也许这就回答了我的问题,但是如果有人知道不进行数据转换的方法可能会很有用:DataView速度很快——它们有效地创建了对底层DataTable的指针引用,而不是复制它的任何内容。他们唯一能让你慢下来的是当你对一个计算列进行复杂的计算时,这在你的情况下是不必要的。对于你的情况(只是隐藏一个特定的列),DataView会非常快,并且不会涉及额外的计算。如果您看到使用DataView导致的速度缓慢,请发送到Google组,我们将进行查看。