可视化:地理分布图

概览

地理地图是国家/地区、洲或区域的地图,其中有指定给特定区域的颜色和值。值以色阶表示,您可以选择为区域指定悬停文本。系统会利用嵌入式 Flash 播放器在浏览器中呈现地图。请注意,地图不可滚动或拖动,但可以配置为允许缩放。

示例

这里我们有两个示例:一个使用区域显示样式,另一个使用标记显示样式

地区示例

“地区”样式会使用与您指定的值相对应的颜色填充整个地区(通常是国家/地区)。通过在代码中分配 options['dataMode'] = 'regions' 来指定区域样式。

<html>
  <head>
    <script type="text/javascript" src="https://www.gstatic.com/charts/loader.js"></script>
    <script type="text/javascript">
      google.charts.load('current', {
        'packages':['geomap'],
        // Note: you will need to get a mapsApiKey for your project.
        // See: https://developers.google.com/chart/interactive/docs/basic_load_libs#load-settings
        'mapsApiKey': 'AIzaSyD-9tSrke72PouQMnMX-a7eZSW0jkFMBWY'
      });
      google.charts.setOnLoadCallback(drawMap);

      function drawMap() {
        var data = google.visualization.arrayToDataTable([
          ['Country', 'Popularity'],
          ['Germany', 200],
          ['United States', 300],
          ['Brazil', 400],
          ['Canada', 500],
          ['France', 600],
          ['RU', 700]
        ]);

        var options = {};
        options['dataMode'] = 'regions';

        var container = document.getElementById('regions_div');
        var geomap = new google.visualization.GeoMap(container);

        geomap.draw(data, options);
      };
    </script>
  </head>
  <body>
    <div id="regions_div" style="width: 900px; height: 500px;"></div>
  </body>
</html>

标记示例

“标记”样式会在您指定的区域上显示一个圆形,其大小和颜色分别代表一个值。

<html>
<head>
  <script type='text/javascript' src='https://www.gstatic.com/charts/loader.js'></script>
  <script type='text/javascript'>
   google.charts.load('current', {'packages': ['geomap']});
   google.charts.setOnLoadCallback(drawMap);

    function drawMap() {
      var data = google.visualization.arrayToDataTable([
        ['City', 'Popularity'],
        ['New York', 200],
        ['Boston', 300],
        ['Miami', 400],
        ['Chicago', 500],
        ['Los Angeles', 600],
        ['Houston', 700]
      ]);

      var options = {};
      options['region'] = 'US';
      options['colors'] = [0xFF8747, 0xFFB581, 0xc06000]; //orange colors
      options['dataMode'] = 'markers';

      var container = document.getElementById('map_canvas');
      var geomap = new google.visualization.GeoMap(container);
      geomap.draw(data, options);
    };

  </script>
</head>

<body>
    <div id='map_canvas'></div>
</body>

</html>

正在加载

google.charts.load 软件包名称为 "geomap"

  google.charts.load('current', {'packages': ['geomap']});

地理地图可视化类名称为 google.visualization.GeoMap

  var visualization = new google.visualization.GeoMap(container);

数据格式

支持两种地址格式,每种地址格式支持的列数不同,且每列的数据类型各不相同。表中的所有地址都必须使用一种方式;不能混用类型。

  • 格式 1:经纬度位置。仅当 dataMode 选项为“markers”时,此格式才有效。如果采用此格式,则无需添加 Google 地图 JavaScript。该地理位置会分两列输入,另加两个可选列:
    1. [数字,必填] 纬度。正数表示北方,负数表示南方。
    2. [数字,必填] 经度。正数表示东,负数表示西。
    3. [数字,可选] 用户将鼠标悬停在此区域上时显示的数值。如果使用第 4 列,则此列为必填列。
    4. [字符串,可选] 用户将鼠标悬停在此区域上时显示的其他字符串文本。
  • 格式 2:地址、国家/地区名称、地区名称位置或美国大都市区号。此格式适用于设置为“markers”或“regions”的 dataMode 选项。在一列中输入位置,以及以下两个可选列:
    1. [字符串,必需] 地图位置。接受以下格式:
      • 具体地址(例如“宾夕法尼亚大街 1600 号”)。
      • 字符串形式的国家/地区名称(例如“英国”),或者大写 ISO-3166 代码或其对应的英语文本(例如“GB”或“英国”)。
      • 大写的 ISO-3166-2 区域代码名称或对应的英文文本(例如“US-NJ”或“New Jersey”)。注意:只有在 dataMode 选项设置为“regions”时,才能指定区域。
      • 都市区号。这些是用于表示不同区域的三位数都市圈代码;仅支持美国代码。请注意,这些区号与电话区号不同
    2. [数字,可选] 用户将鼠标悬停在此区域上时显示的数值。如果使用第 3 列,则此列为必填列。
    3. [字符串,可选] 用户将鼠标悬停在此区域上时显示的其他字符串文本。

注意:一个地图最多可以显示 400 个条目;如果您的 DataTable 或 DataView 保存的行超过 400 行,则只会显示前 400 行。最快的模式是 dataMode='regions'(位置指定为 ISO 代码)和 dataMode='markers'(带纬度/经度元素)。最慢的模式是带有字符串地址的 dataMode='markers'

重要提示DataTable 必须包含您要使用的任何列前面的所有可选列。例如,如果您要指定纬度/经度表,并且只想使用列 1、2 和 4,则 DataTable 仍然必须定义列 3(但您无需向其添加任何值):

dataTable = new google.visualization.DataTable();
dataTable.addRows(1);
dataTable.addColumn('number', 'LATITUDE', 'Latitude');
dataTable.addColumn('number', 'LONGITUDE', 'Longitude');
dataTable.addColumn('number', 'VALUE', 'Value'); // Won't use this column, but still must define it.
dataTable.addColumn('string', 'HOVER', 'HoverText');

dataTable.setValue(0,0,47.00);
dataTable.setValue(0,1,-122.00);
dataTable.setValue(0,3,"Hello World!");

配置选项

名称 类型 默认 说明
region string “世界”

要在地图上显示的区域。(周围区域也会显示。)可以是国家/地区代码(采用大写的 ISO-3166 格式),也可以是以下字符串之一:

  • world -(全世界)
  • us_metro -(美国,都市圈)
  • 005 -(南美洲)
  • 013 -(中美洲)
  • 021 -(北美洲)
  • 002 -(整个非洲)
  • 017 -(中非)
  • 015 -(北非)
  • 018 -(南非)
  • 030 -(东亚)
  • 034 -(南亚)
  • 035 -(亚太地区)
  • 009 -(大洋洲)
  • 145 -(中东)
  • 143 -(中亚)
  • 151 -(北亚)
  • 154 -(北欧)
  • 155 -(西欧)
  • 039 -(南欧)

地理分布图不支持滚动或拖动行为,仅限制了缩放行为。通过设置 showZoomOut 属性,即可启用基本的缩小功能。

dataMode string “地区”

如何在地图上显示值。支持以下两个值:

  • regions - 使用适当的颜色为整个区域着色。此选项无法与纬度/经度地址搭配使用。 请参阅区域示例
  • markers - 在区域上显示一个点,颜色和大小表示相应的值。请参阅标记示例
width string “556 像素” 可视化图表的宽度。如果未指定单位,则默认单位为像素。
height string “347 像素” 可视化图表的高度。如果未指定单位,则默认单位为像素。
colors 格式为 0xRRGGBB 的 RGB 数字数组 [0xE0FFD4、0xA5EF63、0x50AA00、0x267114] 要分配给可视化图表中的值的颜色渐变。您必须至少有两个值;渐变色将包含所有值,外加计算得出的中间值,其中最浅的颜色是最小值,最深的颜色是最高值。
showLegend boolean true 如果为 true,则显示地图的图例。
showZoomOut boolean false 如果为 true,则显示带有 zoomOutLabel 属性所指定标签的按钮。请注意,点击此按钮时,它不会执行任何操作,只是抛出 zoomOut 事件。 如需处理缩放操作,请捕获此事件并更改 region 选项。只有当 region 选项小于世界视图时,您才能指定 showZoomOut。启用放大行为的一种方法是,监听 regionClick 事件,将 region 属性更改为相应的区域,然后重新加载地图。
zoomOutLabel string “缩小” 缩放按钮的标签。

方法

方法 返回值类型 说明
draw(data, options) 绘制地图。可以在绘制完成之前返回(请参阅 drawingDone() 事件)。
getSelection() 选择元素数组 标准 getSelection() 实现。所选元素是行。仅当 dataMode 选项为“regions”时,此方法才有效。您只能选择已分配值的区域。
setSelection(selection) 标准的 setSelection() 实现。将选定项视为行选择,并支持多行选择。只能选择已分配值的区域。

事件

名称 说明 属性
error 尝试渲染图表时出错时触发。 id、message
select

当用户点击带有指定值的区域时触发。如需了解所选内容,请调用 getSelection()。仅在 dataMode 选项设置为“区域”时可用。

注意:由于某些限制,如果您在浏览器中以文件(例如select“file://”),而不是从服务器(例如,"http://www").

regionClick

在点击区域时调用。同时适用于“区域”和“标记”dataMode。不过,在标记模式下,系统不会针对“region”选项中指定的特定国家/地区(如果列出了特定国家/地区)抛出该异常。

注意:由于某些限制,如果您在浏览器中以文件(例如regionClick“file://”),而不是从服务器(例如,"http://www").

具有单个属性 region 的对象,该属性是一个 ISO-3166 格式的字符串,用于描述所点击的区域。
zoomOut

在点击缩小按钮时调用。如需处理缩放操作,请捕获此事件并更改 region 选项。

注意:由于某些限制,如果您在浏览器中以文件(例如zoomOut“file://”),而不是从服务器(例如,"http://www").

drawingDone 在地理分布图绘制完毕时调用。

数据政策

地点由 Google 地图进行地理编码。任何不需要地理编码的数据都不会发送到任何服务器。如需详细了解其数据政策,请参阅 Google 地图服务条款

说明

由于 Flash 安全设置,当从浏览器的文件位置(如 file:///c:/webhost/myhost/myviz.html)而不是从网络服务器网址(如 http://www.myhost.com/myviz.html)进行访问时,此(以及所有基于 Flash 的可视化)可能无法正常运行。这通常只是测试问题。您可以按照 Macromedia 网站上的说明来解决此问题。