Обзор
Карта Google Map Chart отображает карту с использованием API Google Maps . Значения данных отображаются в виде маркеров на карте. Значениями данных могут быть координаты (пары широты и долготы) или адреса. Карта будет масштабирована таким образом, чтобы включать в себя все выявленные точки.
Если вы хотите, чтобы ваши карты представляли собой штриховые рисунки, а не спутниковые снимки, используйте вместо этого геодиаграмму .
Именованные локации
Вы можете определить места для размещения маркеров по названиям, как показано ниже на этой карте десяти стран с наибольшим населением.
 Когда пользователь выбирает один из маркеров, отображается всплывающая подсказка с названием и населением страны, поскольку мы использовали опцию showInfoWindow . Кроме того, когда пользователь на короткое время наводит указатель мыши на один из маркеров, отображается подсказка «заголовок» с той же информацией, поскольку мы использовали опцию showTooltip . Вот полный HTML:
<html>
  <head>
  <script type="text/javascript" src="https://www.gstatic.com/charts/loader.js"></script>
  <script>
    google.charts.load('current', {
    'packages': ['map'],
    // 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', 'Population'],
        ['China', 'China: 1,363,800,000'],
        ['India', 'India: 1,242,620,000'],
        ['US', 'US: 317,842,000'],
        ['Indonesia', 'Indonesia: 247,424,598'],
        ['Brazil', 'Brazil: 201,032,714'],
        ['Pakistan', 'Pakistan: 186,134,000'],
        ['Nigeria', 'Nigeria: 173,615,000'],
        ['Bangladesh', 'Bangladesh: 152,518,015'],
        ['Russia', 'Russia: 146,019,512'],
        ['Japan', 'Japan: 127,120,000']
      ]);
    var options = {
      showTooltip: true,
      showInfoWindow: true
    };
    var map = new google.visualization.Map(document.getElementById('chart_div'));
    map.draw(data, options);
  };
  </script>
  </head>
  <body>
    <div id="chart_div"></div>
  </body>
</html>
Геокодированные местоположения
Вы также можете указать местоположения по широте и долготе, которые загружаются быстрее, чем именованные местоположения:
На приведенной выше диаграмме указаны четыре местоположения по широте и долготе.
  var data = google.visualization.arrayToDataTable([
    ['Lat', 'Long', 'Name'],
    [37.4232, -122.0853, 'Work'],
    [37.4289, -122.1697, 'University'],
    [37.6153, -122.3900, 'Airport'],
    [37.4422, -122.1731, 'Shopping']
  ]);
<html>
  <head>
    <script type="text/javascript" src="https://www.gstatic.com/charts/loader.js"></script>
    <script type="text/javascript">
      google.charts.load("current", {
        "packages":["map"],
        // 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(drawChart);
      function drawChart() {
        var data = google.visualization.arrayToDataTable([
          ['Lat', 'Long', 'Name'],
          [37.4232, -122.0853, 'Work'],
          [37.4289, -122.1697, 'University'],
          [37.6153, -122.3900, 'Airport'],
          [37.4422, -122.1731, 'Shopping']
        ]);
        var map = new google.visualization.Map(document.getElementById('map_div'));
        map.draw(data, {
          showTooltip: true,
          showInfoWindow: true
        });
      }
    </script>
  </head>
  <body>
    <div id="map_div" style="width: 400px; height: 300px"></div>
  </body>
</html>
Настройка маркеров
Вы можете использовать формы маркеров, расположенные в других местах в Интернете. Вот пример использования синих булавок с сайта iconarchive.com:
Если вы выберете контакты на приведенной выше диаграмме, они будут наклонены. Поддерживаются PNG, GIF и JPG.
  var options = {
    icons: {
      default: {
        normal: 'https://icons.iconarchive.com/icons/icons-land/vista-map-markers/48/Map-Marker-Ball-Azure-icon.png',
        selected: 'https://icons.iconarchive.com/icons/icons-land/vista-map-markers/48/Map-Marker-Ball-Right-Azure-icon.png'
      }
    }
  };
<html>
  <head>
    <script type="text/javascript" src="https://www.gstatic.com/charts/loader.js"></script>
    <script type="text/javascript">
      google.charts.load("current", {
        "packages":["map"],
        // 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(drawChart);
      function drawChart() {
        var data = google.visualization.arrayToDataTable([
          ['Lat', 'Long', 'Name'],
          [37.4232, -122.0853, 'Work'],
          [37.4289, -122.1697, 'University'],
          [37.6153, -122.3900, 'Airport'],
          [37.4422, -122.1731, 'Shopping']
        ]);
        var options = {
          icons: {
            default: {
              normal: 'https://icons.iconarchive.com/icons/icons-land/vista-map-markers/48/Map-Marker-Ball-Azure-icon.png',
              selected: 'https://icons.iconarchive.com/icons/icons-land/vista-map-markers/48/Map-Marker-Ball-Right-Azure-icon.png'
            }
          }
        };
        var map = new google.visualization.Map(document.getElementById('map_markers_div'));
        map.draw(data, options);
      }
    </script>
  </head>
  <body>
    <div id="map_markers_div" style="width: 400px; height: 300px"></div>
  </body>
</html>
Добавление нескольких наборов маркеров
Помимо создания набора маркеров по умолчанию, вы также можете создать несколько наборов маркеров.
 Чтобы создать дополнительный набор маркеров, добавьте идентификатор к опции icons и установите изображения маркеров. Затем добавьте столбец в таблицу данных и установите идентификатор набора маркеров, который вы хотите использовать для каждой строки в таблице данных (вы также можете использовать 'default' или null , чтобы использовать маркеры по умолчанию). 
      var url = 'https://icons.iconarchive.com/icons/icons-land/vista-map-markers/48/';
      var options = {
        zoomLevel: 6,
        showTooltip: true,
        showInfoWindow: true,
        useMapTypeControl: true,
        icons: {
          blue: {
            normal:   url + 'Map-Marker-Ball-Azure-icon.png',
            selected: url + 'Map-Marker-Ball-Right-Azure-icon.png'
          },
          green: {
            normal:   url + 'Map-Marker-Push-Pin-1-Chartreuse-icon.png',
            selected: url + 'Map-Marker-Push-Pin-1-Right-Chartreuse-icon.png'
          },
          pink: {
            normal:   url + 'Map-Marker-Ball-Pink-icon.png',
            selected: url + 'Map-Marker-Ball-Right-Pink-icon.png'
          }
        }
      };
    
<html>
<head>
  <script type="text/javascript" src="https://www.gstatic.com/charts/loader.js"></script>
  <script type="text/javascript">
    google.charts.load('current', {
      'packages': ['map'],
      // 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 = new google.visualization.DataTable();
      data.addColumn('string', 'Address');
      data.addColumn('string', 'Location');
      data.addColumn('string', 'Marker')
      data.addRows([
        ['New York City NY, United States', 'New York',   'blue' ],
        ['Scranton PA, United States',      'Scranton',   'green'],
        ['Washington DC, United States',    'Washington', 'pink' ],
        ['Philadelphia PA, United States',  'Philly',     'green'],
        ['Pittsburgh PA, United States',    'Pittsburgh', 'green'],
        ['Buffalo NY, United States',       'Buffalo',    'blue' ],
        ['Baltimore MD, United States',     'Baltimore',  'pink' ],
        ['Albany NY, United States',        'Albany',     'blue' ],
        ['Allentown PA, United States',     'Allentown',  'green']
      ]);
      var url = 'https://icons.iconarchive.com/icons/icons-land/vista-map-markers/48/';
      var options = {
        zoomLevel: 6,
        showTooltip: true,
        showInfoWindow: true,
        useMapTypeControl: true,
        icons: {
          blue: {
            normal:   url + 'Map-Marker-Ball-Azure-icon.png',
            selected: url + 'Map-Marker-Ball-Right-Azure-icon.png'
          },
          green: {
            normal:   url + 'Map-Marker-Push-Pin-1-Chartreuse-icon.png',
            selected: url + 'Map-Marker-Push-Pin-1-Right-Chartreuse-icon.png'
          },
          pink: {
            normal:   url + 'Map-Marker-Ball-Pink-icon.png',
            selected: url + 'Map-Marker-Ball-Right-Pink-icon.png'
          }
        }
      };
      var map = new google.visualization.Map(document.getElementById('map_div'));
      map.draw(data, options);
    }
  </script>
</head>
<body>
  <div id="map_div" style="height: 500px; width: 900px"></div>
</body>
</html>
    Стилизация карт
Визуализация карты дает возможность устанавливать собственные стили, что позволяет создавать один или несколько пользовательских типов карт.
 Вы можете определить собственный тип карты, создав объект стиля карты и поместив его под его идентификатор ( mapTypeId ) в параметре карты. Например:
  var options = {
    maps: {
      <map style ID>: <map style object>
    }
  };
Позже вы сможете обратиться к этому пользовательскому типу карты по идентификатору стиля карты, который вы ему назначили.
 Ваш объект стиля карты содержит name , которое будет отображаемым именем в элементе управления типом карты (оно не обязательно должно совпадать с его mapTypeId ), и массив styles , который будет содержать объекты стиля для каждого элемента, который вы хотите стилизовать. Справочник по API Карт Google содержит список различных типов элементов, функций и стилей, с помощью которых вы можете создать собственный тип карты.
 Примечание. Ваш собственный идентификатор mapTypeId должен быть указан в разделе maps . 
      var options = {
        mapType: 'styledMap',
        zoomLevel: 12,
        showTooltip: true,
        showInfoWindow: true,
        useMapTypeControl: true,
        maps: {
          // Your custom mapTypeId holding custom map styles.
          styledMap: {
            name: 'Styled Map', // This name will be displayed in the map type control.
            styles: [
              {featureType: 'poi.attraction',
               stylers: [{color: '#fce8b2'}]
              },
              {featureType: 'road.highway',
               stylers: [{hue: '#0277bd'}, {saturation: -50}]
              },
              {featureType: 'road.highway',
               elementType: 'labels.icon',
               stylers: [{hue: '#000'}, {saturation: 100}, {lightness: 50}]
              },
              {featureType: 'landscape',
               stylers: [{hue: '#259b24'}, {saturation: 10}, {lightness: -22}]
              }
        ]}}
      };
<html>
<head>
  <script type="text/javascript" src="https://www.gstatic.com/charts/loader.js"></script>
  <script type="text/javascript">
    google.charts.load('current', {
      'packages': ['map'],
      // 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 = new google.visualization.DataTable();
      data.addColumn('string', 'Address');
      data.addColumn('string', 'Location');
      data.addRows([
        ['Lake Buena Vista, FL 32830, United States',                  'Walt Disney World'],
        ['6000 Universal Boulevard, Orlando, FL 32819, United States', 'Universal Studios'],
        ['7007 Sea World Drive, Orlando, FL 32821, United States',     'Seaworld Orlando' ]
      ]);
      var options = {
        mapType: 'styledMap',
        zoomLevel: 12,
        showTooltip: true,
        showInfoWindow: true,
        useMapTypeControl: true,
        maps: {
          // Your custom mapTypeId holding custom map styles.
          styledMap: {
            name: 'Styled Map', // This name will be displayed in the map type control.
            styles: [
              {featureType: 'poi.attraction',
               stylers: [{color: '#fce8b2'}]
              },
              {featureType: 'road.highway',
               stylers: [{hue: '#0277bd'}, {saturation: -50}]
              },
              {featureType: 'road.highway',
               elementType: 'labels.icon',
               stylers: [{hue: '#000'}, {saturation: 100}, {lightness: 50}]
              },
              {featureType: 'landscape',
               stylers: [{hue: '#259b24'}, {saturation: 10}, {lightness: -22}]
              }
        ]}}
      };
      var map = new google.visualization.Map(document.getElementById('map_div'));
      map.draw(data, options);
    }
  </script>
</head>
<body>
<div id="map_div" style="height: 500px; width: 900px"></div>
</body>
</html>
 Помимо создания пользовательских типов карт, вы также можете указать, какие карты пользователь может просматривать в элементе управления типами карт, с помощью параметра mapTypeIds . По умолчанию все типы карт, включая пользовательские типы карт, отображаются в элементе управления типами карт. Опция mapTypeIds принимает массив строк типов карт, которые вы хотите разрешить пользователю просматривать. Эти строки должны относиться либо к предопределенным именам стилей карты по умолчанию (т. е. обычный, спутниковый, ландшафтный, гибридный), либо к идентификатору стиля карты определенного вами пользовательского типа карты. Установив опцию mapTypeIds , ваша карта будет предоставлять доступ только к тем типам карт, которые вы указали в этом массиве.
 Вы также можете использовать это в сочетании с опцией mapType , чтобы установить стиль карты по умолчанию, но не включать его в массив mapTypeIds . Это приведет к тому, что карта будет отображаться только при начальной загрузке. 
      var options = {
        mapType: 'styledMap',
        zoomLevel: 7,
        showTooltip: true,
        showInfoWindow: true,
        useMapTypeControl: true,
        // User will only be able to view/select custom styled maps.
        mapTypeIds: ['styledMap', 'redEverything', 'imBlue'],
        maps: {
          styledMap: {
            name: 'Styled Map',
            styles: [
              {featureType: 'poi.attraction',
               stylers: [{color: '#fce8b2'}]},
              {featureType: 'road.highway',
               stylers: [{hue: '#0277bd'}, {saturation: -50}]},
              {featureType: 'road.highway', elementType: 'labels.icon',
               stylers: [{hue: '#000'}, {saturation: 100}, {lightness: 50}]},
              {featureType: 'landscape',
               stylers: [{hue: '#259b24'}, {saturation: 10},{lightness: -22}]}
          ]},
          redEverything: {
            name: 'Redden All The Things',
            styles: [
              {featureType: 'landscape',
               stylers: [{color: '#fde0dd'}]},
              {featureType: 'road.highway',
               stylers: [{color: '#67000d'}]},
              {featureType: 'road.highway', elementType: 'labels',
               stylers: [{visibility: 'off'}]},
              {featureType: 'poi',
               stylers: [{hue: '#ff0000'}, {saturation: 50}, {lightness: 0}]},
              {featureType: 'water',
               stylers: [{color: '#67000d'}]},
              {featureType: 'transit.station.airport',
               stylers: [{color: '#ff0000'}, {saturation: 50}, {lightness: -50}]}
          ]},
          imBlue: {
            name: 'All Your Blues are Belong to Us',
            styles: [
              {featureType: 'landscape',
               stylers: [{color: '#c5cae9'}]},
              {featureType: 'road.highway',
               stylers: [{color: '#023858'}]},
              {featureType: 'road.highway', elementType: 'labels',
               stylers: [{visibility: 'off'}]},
              {featureType: 'poi',
               stylers: [{hue: '#0000ff'}, {saturation: 50}, {lightness: 0}]},
              {featureType: 'water',
               stylers: [{color: '#0288d1'}]},
              {featureType: 'transit.station.airport',
               stylers: [{color: '#0000ff'}, {saturation: 50}, {lightness: -50}]}
          ]}
        }
      };
Загрузка
 Имя пакета google.charts.load — "map" .
 Обратите внимание, что вам нужно будет получить собственный mapsApiKey для вашего проекта, а не просто копировать тот, который используется в примерах здесь, чтобы избежать деградации сервиса картографических данных для ваших пользователей. Более подробную информацию см. в разделе Загрузка настроек .
      google.charts.load("current", {
        "packages":["map"],
        // 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.visualization.Map . Поскольку сокращенное имя Map конфликтует с классом JavaScript Map , ChartWrapper не будет автоматически загружать этот пакет, когда вы указываетеchartType chartType: 'Map' . Но вместо этого вы можете указатьchartType chartType: 'google.visualization.Map' .
var visualization = new google.visualization.Map(container);
Формат данных
Поддерживаются два альтернативных формата данных:
- Пары широта-долгота . Первые два столбца должны быть числами, обозначающими широту и долготу соответственно. Необязательный третий столбец содержит строку, описывающую местоположение, указанное в первых двух столбцах.
 - Строковый адрес . Первый столбец должен представлять собой строку, содержащую адрес. Этот адрес должен быть максимально полным. Необязательный второй столбец содержит строку, описывающую местоположение в первом столбце. Строковые адреса загружаются медленнее, особенно если у вас более 10 адресов.
 
Примечание. Параметр «Пары широты и долготы» загружает карты намного быстрее, особенно с большими данными. Мы рекомендуем использовать эту опцию для больших наборов данных. Посетите API Карт Google , чтобы узнать, как преобразовать ваши адреса в точки широты. На карте может отображаться максимум 400 записей; если ваши данные содержат более 400 строк, будут показаны только первые 400.
Параметры конфигурации
| Имя | |
|---|---|
| включитьScrollWheel | Если установлено значение true, позволяет увеличивать и уменьшать масштаб с помощью колеса прокрутки мыши.  Тип: логический  По умолчанию: ложь  | 
| значки |  Содержит набор пользовательских маркеров. Каждый набор маркеров может указывать  var options = {
  icons: {
    default: {
      normal:   '/path/to/marker/image',
      selected: '/path/to/marker/image'
    },
    customMarker: {
      normal:   '/path/to/other/marker/image',
      selected: '/path/to/other/marker/image'
    }
  }
}; Тип: объект  По умолчанию: ноль  | 
| линияЦвет | Если showLine имеет значение true, определяет цвет линии. Например: «#800000».  Тип: строка  По умолчанию: цвет по умолчанию  | 
| ширина линии | Если showLine имеет значение true, определяет ширину линии (в пикселях).  Тип: номер  По умолчанию: 10  | 
| карты.<mapTypeId> |  Объект, содержащий свойства пользовательского типа карты. Доступ к этому настраиваемому типу карты будет осуществляться по  
  Тип: объект  По умолчанию: ноль  | 
| карты.<mapTypeId>.name |  Имя карты, которая будет отображаться в элементе управления картой, если для   Тип: строка  По умолчанию: ноль  | 
| карты.<mapTypeId>.styles | Содержит объекты стиля для различных элементов пользовательского типа карты.  Каждый объект стиля может содержать от 1 до 3 свойств:  {
  featureType: 'roadway.highway',
  elementType: 'labels.text.fill',
  stylers: [{hue: '#ff0000}, {saturation: 50}, {lightness: 100}]
}Дополнительную информацию о различных функциях, элементах и стилях см. в документации по Картам .  Тип: массив  По умолчанию: ноль  | 
| тип карты | Тип отображаемой карты. Возможные значения: «обычный», «рельеф», «спутник», «гибрид» или идентификатор пользовательского типа карты, если таковой был создан.  Тип: строка  По умолчанию: «гибрид»  | 
| идентификаторы типа карты |  При использовании элемента управления типом карты (   Тип: массив  По умолчанию: ноль  | 
| шоуинформационное окно |  Если установлено значение true, описание местоположения отображается в отдельном окне, когда пользователь выбирает маркер точки. До версии 45 эта опция называлась   Тип: логический  По умолчанию: ложь  | 
| шоуЛайн | Если установлено значение true, отображается ломаная линия Карт Google, проходящая через все точки.  Тип: логический  По умолчанию: ложь  | 
| показатьПодсказка |  Если установлено значение true, описание местоположения отображается в виде всплывающей подсказки, когда мышь находится над маркером точки. До версии 45 этот параметр назывался   Тип: логический  По умолчанию: ложь  | 
| использоватьMapTypeControl | Покажите переключатель типа карты, который позволяет зрителю переключаться между [карта, спутник, гибрид, местность]. Если useMapTypeControl имеет значение false (по умолчанию), селектор не отображается, а тип определяется параметром mapType.  Тип: логический  По умолчанию: ложь  | 
| масштабированиеУровень | Целое число, указывающее начальный уровень масштабирования карты, где 0 — полное уменьшение масштаба (весь мир), а 19 — максимальный уровень масштабирования. (См. «Уровни масштабирования» в API Карт Google .)  Тип: номер  По умолчанию: автоматический   | 
Методы
| Метод | |
|---|---|
 draw(data, options) | Рисует карту.  Тип возврата: нет  | 
 getSelection() |  Стандартная реализация   Тип возвращаемого значения: Массив элементов выбора.  | 
 setSelection(selection) |  Стандартная реализация   Тип возврата: нет   | 
События
| Имя | |
|---|---|
 error | Вызывается, когда возникает ошибка при попытке отобразить диаграмму.  Свойства: идентификатор, сообщение  | 
 select | Стандартное событие выбора  Свойства: Нет   | 
Политика данных
Карта отображается с помощью Google Maps. Дополнительную информацию о политике использования данных можно найти в Условиях использования Карт Google .