【问题标题】:Display West Africa with Google GeoChart使用 Google GeoChart 显示西非
【发布时间】:2015-06-15 20:04:47
【问题描述】:

我想使用 Google 的 Chart API 显示世界地图 (GeoChart),其中一些国家按国家/地区列出,而其他国家则根据分组/地区显示。

我的数据可能如下所示:

[["Country","DataValue"],["United States",2000],["West Africa",3000],["Great Britain",1500]];

这可能吗?我尝试使用选项的displayMode 属性,但这没有任何好处。我还尝试使用“011”而不是“西非”,因为“011”被 API 识别为一个区域。那也没用。

我可以使用region 选项仅显示西非地区,但这不是我想要的。我真的很想展示这个世界,但是像西非这样的地区作为一个整体而不是单个国家来处理和着色。

感谢您的帮助。

【问题讨论】:

    标签: javascript google-visualization


    【解决方案1】:

    Google Geochart 支持全球或特定区域(例如011 Western Africa

    因为你的目标:

    展示世界,但处理和处理像西非这样的地区 作为一个群体而不是单个国家着色

    我将提出以下解决方案:将一个地区的数据表行动态扩展为该地区每个国家/地区的行:

    function expandRegions(dataTable) {
        var regions = {
            'West Africa': {
                '204': 'Benin',
                '854': 'Burkina Faso',
                '132': 'Cabo Verde',
                '384': "Cote d'Ivoire",
                '270': 'Gambia',
                '288': 'Ghana',
                '324': 'Guinea',
                '624': 'Guinea-Bissau',
                '430': 'Liberia',
                '466': 'Mali',
                '478': 'Mauritania',
                '562': 'Niger',
                '566': 'Nigeria',
                '654': 'Saint Helena',
                '686': 'Senegal',
                '694': 'Sierra Leone',
                '768': 'Togo'
            }
        };
    
    
        for (var i = 0; i < dataTable.getNumberOfRows(); i++) {
            var regionName = dataTable.getValue(i, 0);
            var region = regions[regionName];
            if (region) {
                var value = dataTable.getValue(i, 1);
                dataTable.removeRow(i); //remove region row
                //add countries from region rows 
                for (var code in region) {
                    var countryName = region[code];
                    dataTable.addRow([countryName, value]);
                }
            }
        }
        return dataTable;
    }
    

    完整示例

    google.load("visualization", "1", { packages: ["geochart"] });
    google.setOnLoadCallback(drawRegionsMap);
    
    function drawRegionsMap() {
    
        var data = google.visualization.arrayToDataTable([
            ["Country","DataValue"],
            ["United States",2000],
            ["West Africa",3000],
            ["Great Britain",1500]
         ]);
        
        data = expandRegions(data);
    
        var options = {
        };
        var chart = new google.visualization.GeoChart(document.getElementById('regions_div'));
        chart.draw(data, options);
    }
    
    
    function expandRegions(dataTable) {
        var regions = {
            'West Africa': {
                '204': 'Benin',
                '854': 'Burkina Faso',
                '132': 'Cabo Verde',
                '384': "Cote d'Ivoire",
                '270': 'Gambia',
                '288': 'Ghana',
                '324': 'Guinea',
                '624': 'Guinea-Bissau',
                '430': 'Liberia',
                '466': 'Mali',
                '478': 'Mauritania',
                '562': 'Niger',
                '566': 'Nigeria',
                '654': 'Saint Helena',
                '686': 'Senegal',
                '694': 'Sierra Leone',
                '768': 'Togo'
            }
        };
    
    
        for (var i = 0; i < dataTable.getNumberOfRows(); i++) {
            var regionName = dataTable.getValue(i, 0);
            var region = regions[regionName];
            if (region) {
                var value = dataTable.getValue(i, 1);
                dataTable.removeRow(i);
                for (var code in region) {
                    var countryName = region[code];
                    dataTable.addRow([countryName, value]);
                }
            }
        }
        return dataTable;
    }
    <script type="text/javascript" src="https://www.google.com/jsapi"></script>
    <div id="regions_div" style="width: 900px; height: 500px;"></div>

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-10-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-04-25
      • 2019-09-12
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多