区域未在地理图表中突出显示

时间:2013-10-11 10:42:18

标签: javascript google-visualization

当从包含所有州的下拉列表中选择美国州时,我希望在美国地图中突出显示该州。我想使用Google Charts API的Geo Chart来实现这一目标。

在尝试实现这一目标时,我在Google Code Playground中尝试了此示例(您可以在其中编辑现有示例)

function drawVisualization() {
  var data = google.visualization.arrayToDataTable([
    ['Country'],
    ['US-AK' ],
    ['US-AZ' ],
    ['US-HI' ],

  ]);

  var geochart = new google.visualization.GeoChart(
      document.getElementById('visualization'));
  geochart.draw(data, {region:"US",legend:"none",width: 556, height: 347});
}

虽然阿拉斯加('US-AK')&夏威夷('US-HI')出现在地图中,亚利桑那州('US-AZ')没有。如何才能让亚利桑那州得到加强?我还要感谢有关我最初目标的任何指示,即当选择下拉列表中的状态时,显示动态突出显示的状态。

2 个答案:

答案 0 :(得分:2)

亚利桑那州没有出现在地图上的原因是因为你必须将resolution选项设置为“provinces”才能获得状态图。使用下拉列表突出显示选定状态有点复杂,但肯定可行。这是你可以做到的一种方式;在你的javascript:

function drawChart () {
    var data = google.visualization.arrayToDataTable([
        ['State', ''],
        ['US-AK', 0],
        ['US-AZ', 0],
        ['US-HI', 0]
    ]);

    var geochart = new google.visualization.GeoChart(document.getElementById('chart_div'));
    var options = {
        region:"US",
        legend:"none",
        width: 556,
        height: 347,
        resolution: 'provinces',
        colorAxis: {
            minValue: 0,
            maxValue: 1,
            colors: ['green', 'red']
        }
    };

    var stateSelector = document.querySelector('#state');    
    function updateChart () {
        var index = this.selectedIndex;
        var selectedState = this.options[index].value;

        var view = new google.visualization.DataView(data);
        view.setColumns([0, {
            type: 'number',
            calc: function (dt, row) {
                return (dt.getValue(row, 0) == selectedState) ? 1 : 0;
            }
        }]);

        geochart.draw(view, options);
    }

    if (document.addEventListener) {
        stateSelector.addEventListener('change', updateChart, false);
    }
    else if (document.attachEvent) {
        stateSelector.attachEvent('onchange', updateChart);
    }
    else {
        stateSelector.onchange = updateChart;
    }

    geochart.draw(data, options);
}
google.load('visualization', '1', {packages:['geochart'], callback: drawChart});

然后在你的HTML中:

<select id="state">
    <option value="" selected="selected">Select a state to highlight</option>
    <option value="US-AK">Alaska</option>
    <option value="US-AZ">Arizona</option>
    <option value="US-HI">Hawaii</option>
</select>
<div id="chart_div"></div>

以下是您可以使用的{JESfiddle:http://jsfiddle.net/asgallant/wwDyU/

答案 1 :(得分:0)

无需为美国或任何国家/地区添加州代码。您可以按原样提供美国州的全名,只需在代码中进行一次修改即可。 只需更改这样的选项....

 var options={
            region:"US",
            resolution: 'provinces',//This is the property due to which U can see regions.
            colors:['green', 'red'],
            dataMode:'regions'

    }