我正在使用Google Visualization Geochart API创建一个国家/地区的地图。我提供ISO 3266-2 Country subdivision code并获得正确的结果。但是,在图表中将ISO 3266-2代码显示为标签是一种糟糕的用户体验。所以我想提供一个自定义标签。以此为例:
function drawVisualization() {
var data = google.visualization.arrayToDataTable([
['Country', 'Popularity'],
['DE-BY', 200],
['DE-NW', 500]
]);
var geochart = new google.visualization.GeoChart(
document.getElementById('visualization'));
geochart.draw(data, {width: 556, height: 347, region: 'DE', resolution: 'provinces'});
}
上试试
我想提供'DE-BY'但是'Bavaria'作为标签。虽然谷歌写了
,但我必须使用ISO 3266-2代码等值的英文文本(例如,“US-NJ”或“New Jersey”)
是允许的,它非常不可靠,并且不适用于'Bavaria'这个例子。
答案 0 :(得分:12)
这是一个有效的概念的快速证明,我正在寻找类似的东西,并希望自动获得名称,但我不确定这是否可能,但这至少允许手动填充工具提示文本
关键因素是使用所需的列创建表,然后应用PatternFormat来获取所需的工具提示,然后创建一个数据视图,其中只包含数据绑定所需的列。 / p>
function drawVisualization() {
var data = new google.visualization.DataTable();
data.addColumn('string', 'Country');
data.addColumn('number', 'Value');
data.addColumn('string', 'Display');
data.addRows([
['Germany', 200, 'Germany'],
['United States', 300, 'USA'],
['Brazil', 400, 'Brasil'],
['Canada', 500, 'Canada'],
['France', 600, 'France'],
['RU', 700, 'Russia']
]);
var geochart = new google.visualization.GeoChart(
document.getElementById('visualization'));
var formatter = new google.visualization.PatternFormat('{1}');
formatter.format(data, [0, 2]);
var view = new google.visualization.DataView(data);
view.setColumns([0, 1]);
geochart.draw(view, {width: 556, height: 347});
}
答案 1 :(得分:0)
根据我的经验,除了大多数人都不知道的代码之外,ISO 3166-2还存在一些问题。
似乎没有可以免费找到可机器处理的最新版本的位置。
除了美国和加拿大等最稳定(通常是联邦)的国家外,这些任务不断变化。有机器可加工但过时的版本可供免费使用。
人们使用的国家/地区名称并不总是官方名称(有些长名称)。
某些国家/地区的地区名称并不符合当地对该地区真实情况的看法(在次区域层面更为糟糕)。
(子)地区名称是英语或当地语言的奇怪组合。
对于那些仍然以ASCII为中心的应用程序,没有Unicode名称的官方ASCII回退。
我没有这方面的算法解决方案,但我对国家/地区代码问题的实用解决方案是有一个长查找表来处理国家/地区名称的常见变体,然后从代码反向查找到可接受的“规范”形式。因为在我的情况下#6我确保规范形式是ASCII。我为ISO 639-1和-3中的语言执行类似的任务。
在ISO 3166-2中为所有地区制定这样的清单是一项非常漫长的任务 - 目前我正专注于经合组织,金砖四国和欧盟国家,因为这样做有很长的路要走。