Google图表:过滤GeoChart

时间:2016-02-26 16:42:52

标签: javascript google-visualization

我正在尝试使用ControlWrapper过滤数据以在仪表板内的GeoChart上显示。问题如下:我必须有三列:'国家','价值'和'季度'。现在,我想仅显示四分之一的信息,我可以通过CategoryPicker选择。然后,使用仪表板功能,我想将我的选择器绑定到我的GeoChart。但是,我无法显示我的GeoChart,因为它引发了一个错误,因为我使用三列,我应该只有两个......

我知道诀窍是使用DataView并隐藏第三列但我无法链接我的过滤器和我的geochart。

这里有解决方法吗?我的部分代码可以在下面找到。顺便说一句,这适用于其他类型的图表,但不适用于GeoChart ......为什么?

事先,非常感谢你的帮助!

var data = response.getDataTable();

        var dashboard = new google.visualization.Dashboard(document.getElementById('dashboard_div'));

        var quarterSelector = new google.visualization.ControlWrapper({
                'controlType': 'CategoryFilter',
                'containerId': 'filter_div',
                'options': {
                    'filterColumnLabel': 'Quarter',
                     ui: {
                        allowTyping: false,
                        allowMultiple: false,
                        allowNone: false
                    },
                    'chartView': {
                        'columns': [0,1]
                    },
                }
        });

        var mapChart = new google.visualization.ChartWrapper({
            'chartType': 'GeoChart',
            'containerId': 'regions_div',
            'options': {
                'displayMode': 'regions',
                'region': '150',
                'view': {'columns':[0,1]}
            }
        });         

    dashboard.bind(quarterSelector, mapChart);      
    dashboard.draw(data);

1 个答案:

答案 0 :(得分:1)

首先,chartViewChartRangeFilterui的一部分 - 而不是CategoryFilter

此外,view: {'columns':[0,1]}不应该是options的一部分 但与optionschartTypecontainerId

处于同一级别

然而,这里既不需要......



google.charts.load('current', {
  packages: ['controls', 'geochart'],
  callback: drawChart
});

function drawChart() {
  var data = google.visualization.arrayToDataTable([
    ['Country', 'Popularity', 'Quarter'],
    ['Germany', 200, 1],
    ['United States', 300, 2],
    ['Brazil', 400, 3],
    ['Canada', 500, 4],
    ['France', 600, 3],
    ['RU', 700, 2]
  ]);

  var dashboard = new google.visualization.Dashboard(document.getElementById('dashboard_div'));

  var quarterSelector = new google.visualization.ControlWrapper({
    controlType: 'CategoryFilter',
    containerId: 'filter_div',
    options: {
      filterColumnLabel: 'Quarter',
      ui: {
        allowTyping: false,
        allowMultiple: false,
        allowNone: false
      }
    }
  });


  var mapChart = new google.visualization.ChartWrapper({
    chartType: 'GeoChart',
    containerId: 'regions_div',
    options: {
        displayMode: 'regions'
    }
  });

  dashboard.bind(quarterSelector, mapChart);
  dashboard.draw(data);
}

<script src="https://www.gstatic.com/charts/loader.js"></script>
<script src="https://www.google.com/jsapi"></script>
<div id="dashboard_div">
  <div id="filter_div"></div>
  <div id="regions_div"></div>
</div>
&#13;
&#13;
&#13;