개요
Google 지도 차트에는 Google 지도 API를 사용하여 지도가 표시됩니다. 데이터 값이 지도에 마커로 표시됩니다. 데이터 값은 좌표 (위도 쌍) 또는 주소일 수 있습니다. 지도는 식별된 모든 지점을 포함하도록 조정됩니다.
지도를 위성 이미지가 아닌 선 그림으로 나타내려면 지역 차트를 사용하세요.
이름이 지정된 위치
인구별로 상위 10개 국가의 지도 아래에 표시된 것처럼 마커를 표시할 장소를 식별할 수 있습니다.
사용자가 마커 중 하나를 선택하면 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>
지오코딩된 위치
위도와 경도로 위치를 지정할 수도 있습니다. 이 경우 이름이 지정된 위치보다 빠르게 로드됩니다.
위 차트는 위도 및 경도로 4개의 위치를 식별합니다.
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
옵션에 ID를 추가하고
마커 이미지를 설정합니다. 그런 다음 데이터 표에 열을 추가하고 데이터 표의 각 행에 사용할 마커 세트의 ID를 설정합니다. '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> } };
나중에 이 맞춤 지도 유형을 할당한 지도 스타일 ID로 참조할 수 있습니다.
지도 스타일 객체에는 지도 유형 컨트롤의 표시 이름인 name
(mapTypeId
와 일치하지 않아도 됨)와 스타일을 지정하려는 각 요소의 스타일 객체가 포함된 styles
배열이 포함됩니다. Google 지도 API 참조에는 맞춤 지도 유형을 만들 수 있는 다양한 요소, 지형지물 및 스타일 유형 목록이 포함되어 있습니다.
참고: 맞춤 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
옵션은 사용자가 볼 수 있도록 하려는 지도 유형의 문자열 배열을 허용합니다. 이러한 문자열은 기본 지도 스타일에 대해 사전 정의된 이름 (예: 일반, 위성, 지형, 하이브리드) 또는 정의한 맞춤 지도 유형의 지도 스타일 ID를 참조해야 합니다. 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
는 자바스크립트 Map
클래스와 충돌하므로 ChartWrapper
는 chartType: 'Map'
를 지정할 때 이 패키지를 자동으로 로드하지 않습니다. 대신 chartType: 'google.visualization.Map'
를 지정할 수 있습니다.
var visualization = new google.visualization.Map(container);
데이터 형식
다음과 같은 두 가지 대체 데이터 형식이 지원됩니다.
- 위도-경도 쌍 - 처음 두 열은 각각 위도와 경도를 지정하는 숫자여야 합니다. 선택사항인 세 번째 열에는 처음 두 열에 지정된 위치를 설명하는 문자열이 포함됩니다.
- 문자열 주소 - 첫 번째 열은 주소가 포함된 문자열이어야 합니다. 이 주소는 최대한 완전해야 합니다. 선택사항인 두 번째 열에는 첫 번째 열의 위치를 설명하는 문자열이 포함됩니다. 특히 10개가 넘는 주소가 있는 경우 문자열 주소가 더 느리게 로드됩니다.
참고: 위도-경도 쌍 옵션은 특히 대용량 데이터의 경우 지도를 훨씬 더 빠르게 로드합니다. 대규모 데이터 세트에 이 옵션을 사용하는 것이 좋습니다. Google 지도 API에서 주소를 경도가 높은 지점으로 변환하는 방법을 알아보세요. 맵에는 최대 400개의 항목이 표시될 수 있습니다. 데이터의 행이 400개를 초과하면 처음 400개만 표시됩니다.
구성 옵션
이름 | |
---|---|
ScrollWheel 사용 설정 |
true로 설정하면 마우스 스크롤 휠을 사용하여 확대 및 축소를 사용 설정합니다. 유형: 부울
기본값: false
|
아이콘 |
맞춤 마커 세트를 보관합니다. 각 마커 집합은 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' } } }; 유형: 객체
기본값: null
|
선 색상 |
ShowLine이 true인 경우 선 색상을 정의합니다. 예: '#800000'. 유형: 문자열
기본값: 기본 색상
|
선 너비 |
ShowLine이 true인 경우 선 너비 (픽셀)를 정의합니다. 유형: 숫자
기본값: 10
|
maps.<mapTypeId> |
맞춤 지도 유형의 속성이 포함된 객체입니다. 이 맞춤 지도 유형은 맞춤 지도 유형으로 지정한
유형: 객체
기본값: null
|
maps.<mapTypeId>.name |
유형: 문자열
기본값: null
|
maps.<mapTypeId>.styles |
맞춤 지도 유형의 다양한 요소에 대한 스타일 객체를 보유합니다.
각 스타일 객체에는 1~3개의 속성( { featureType: 'roadway.highway', elementType: 'labels.text.fill', stylers: [{hue: '#ff0000}, {saturation: 50}, {lightness: 100}] } 다양한 기능, 요소, 스타일러에 대한 자세한 내용은 지도 문서를 참고하세요. 유형: 배열
기본값: null
|
mapType |
표시할 지도 유형입니다. 가능한 값은 'normal', 'terrain', 'satellite', 'hybrid' 또는 맞춤 지도 유형의 ID입니다(만든 경우). 유형: 문자열
기본값: '하이브리드'
|
지도 유형 ID |
지도 유형 컨트롤( 유형: 배열
기본값: null
|
ShowInfoWindow |
true로 설정하면 사용자가 지점 마커를 선택할 때 별도의 창에 위치 설명이 표시됩니다. 이 옵션은 버전 45까지 유형: 부울
기본값: false
|
쇼라인 |
true로 설정하면 모든 점을 통해 Google 지도 다중선이 표시됩니다. 유형: 부울
기본값: false
|
도움말 보기 |
true로 설정하면 마우스가 점 마커 위에 위치할 때 위치 설명이 도움말로 표시됩니다. 이 옵션은 버전 45까지 유형: 부울
기본값: false
|
지도 컨트롤 사용 |
뷰어가 [지도, 위성, 하이브리드, 지형] 간에 전환할 수 있는 지도 유형 선택기를 표시합니다. useMapTypeControl이 false (기본값)인 경우 선택기가 표시되지 않고 유형은 mapType 옵션에 따라 결정됩니다. 유형: 부울
기본값: false
|
zoomLevel |
지도의 초기 확대/축소 수준을 나타내는 정수로, 여기서 0은 완전히 축소(전 세계)이고 19는 최대 확대/축소 수준입니다. Google 지도 API의 '확대/축소 수준'을 참고하세요. 유형: 숫자
기본값: 자동
|
방법
메서드 | |
---|---|
draw(data, options) |
지도를 그립니다. 반환 유형: 없음
|
getSelection() |
표준 반환 유형: 선택 요소의 배열
|
setSelection(selection) |
표준 반환 유형: 없음
|
이벤트
이름 | |
---|---|
error |
차트를 렌더링하려고 할 때 오류가 발생하면 실행됩니다. 속성: ID, 메시지
|
select |
표준 선택 이벤트 속성: 없음
|
데이터 정책
지도는 Google 지도에 표시됩니다. 데이터 정책에 대한 자세한 내용은 Google 지도 서비스 약관을 참고하세요.