Geochart:使用ISO 3266-2区域代码但显示真实姓名

时间:2012-06-19 09:28:07

标签: javascript google-visualization

我正在使用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'});
  }

[在Code Playground]

上试试

我想提供'DE-BY'但是'Bavaria'作为标签。虽然谷歌写了

,但我必须使用ISO 3266-2代码
  

等值的英文文本(例如,“US-NJ”或“New Jersey”)

是允许的,它非常不可靠,并且不适用于'Bavaria'这个例子。

2 个答案:

答案 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还存在一些问题。

  1. 似乎没有可以免费找到可机器处理的最新版本的位置。

  2. 除了美国和加拿大等最稳定(通常是联邦)的国家外,这些任务不断变化。有机器可加工但过时的版本可供免费使用。

  3. 人们使用的国家/地区名称并不总是官方名称(有些长名称)。

  4. 某些国家/地区的地区名称并不符合当地对该地区真实情况的看法(在次区域层面更为糟糕)。

  5. (子)地区名称是英语或当地语言的奇怪组合。

  6. 对于那些仍然以ASCII为中心的应用程序,没有Unicode名称的官方ASCII回退。

  7. 我没有这方面的算法解决方案,但我对国家/地区代码问题的实用解决方案是有一个长查找表来处理国家/地区名称的常见变体,然后从代码反向查找到可接受的“规范”形式。因为在我的情况下#6我确保规范形式是ASCII。我为ISO 639-1和-3中的语言执行类似的任务。

    在ISO 3166-2中为所有地区制定这样的清单是一项非常漫长的任务 - 目前我正专注于经合组织,金砖四国和欧盟国家,因为这样做有很长的路要走。