使用 Google GeoChart 显示西非
Display West Africa with Google GeoChart
我想使用 Google 的图表 API 显示世界地图 (GeoChart),其中一些国家/地区按国家/地区列出,而其他国家/地区则根据 grouping/region 显示。
我的数据可能是这样的:
[["Country","DataValue"],["United States",2000],["West Africa",3000],["Great Britain",1500]];
这可以吗?我尝试使用 displayMode
属性 选项,但这没有任何好处。我还尝试使用“011”而不是 "West Africa",因为“011”被 API 识别为一个区域。那也没用。
我可以使用 region
选项只显示西非地区,但这不是我想要的。我真的很想展示世界,但是像西非这样的地区作为一个整体而不是单个国家来处理和着色。
感谢您的帮助。
Google Geochart 支持全世界或特定区域(例如 011 Western Africa
)
因为你的目标:
to display the world but have regions like West Africa handled and
colored as a group rather than individual countries
我会提出以下解决方案:将某个区域的数据 table 行动态扩展到该区域每个国家/地区的行:
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>
我想使用 Google 的图表 API 显示世界地图 (GeoChart),其中一些国家/地区按国家/地区列出,而其他国家/地区则根据 grouping/region 显示。
我的数据可能是这样的:
[["Country","DataValue"],["United States",2000],["West Africa",3000],["Great Britain",1500]];
这可以吗?我尝试使用 displayMode
属性 选项,但这没有任何好处。我还尝试使用“011”而不是 "West Africa",因为“011”被 API 识别为一个区域。那也没用。
我可以使用 region
选项只显示西非地区,但这不是我想要的。我真的很想展示世界,但是像西非这样的地区作为一个整体而不是单个国家来处理和着色。
感谢您的帮助。
Google Geochart 支持全世界或特定区域(例如 011 Western Africa
)
因为你的目标:
to display the world but have regions like West Africa handled and colored as a group rather than individual countries
我会提出以下解决方案:将某个区域的数据 table 行动态扩展到该区域每个国家/地区的行:
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>