개요
이 튜토리얼에서는 Google 지도 및 사이드바에 KML 파일의 정보를 표시하는 방법을 설명합니다. 지도에서 KML 파일을 사용하는 방법에 대한 자세한 내용은 KML 레이어 가이드를 참고하세요. 사이드바에서 데이터를 보려면 아래 지도에서 마커를 클릭해 보세요.
아래 섹션에는 지도와 사이드바를 만드는 데 필요한 전체 코드가 표시되어 있습니다.
var map; var src = 'https://developers.google.com/maps/documentation/javascript/examples/kml/westcampus.kml'; function initMap() { map = new google.maps.Map(document.getElementById('map'), { center: new google.maps.LatLng(-19.257753, 146.823688), zoom: 2, mapTypeId: 'terrain' }); var kmlLayer = new google.maps.KmlLayer(src, { suppressInfoWindows: true, preserveViewport: false, map: map }); kmlLayer.addListener('click', function(event) { var content = event.featureData.infoWindowHtml; var testimonial = document.getElementById('capture'); testimonial.innerHTML = content; }); }
<div id="map"></div> <div id="capture"></div>
html, body { height: 370px; padding: 0; margin: 0; } #map { height: 360px; width: 300px; overflow: hidden; float: left; border: thin solid #333; } #capture { height: 360px; width: 480px; overflow: hidden; float: left; background-color: #ECECFB; border: thin solid #333; border-left: none; }
<!-- Replace the value of the key parameter with your own API key. --> <script async src="https://maps.googleapis.com/maps/api/js?key=AIzaSyCkUOdZ5y7hMm0yrcCQoCvLwzdM6M8s5qk&callback=initMap"> </script>
직접 해보기
코드 창의 오른쪽 상단에 있는 <>
아이콘을 클릭하여 JSFiddle에서 이 코드를 실험할 수 있습니다.
<!DOCTYPE html>
<html>
<head>
<meta name="viewport" content="initial-scale=1.0, user-scalable=no">
<meta charset="utf-8">
<title>KML Click Capture Sample</title>
<style>
html, body {
height: 370px;
padding: 0;
margin: 0;
}
#map {
height: 360px;
width: 300px;
overflow: hidden;
float: left;
border: thin solid #333;
}
#capture {
height: 360px;
width: 480px;
overflow: hidden;
float: left;
background-color: #ECECFB;
border: thin solid #333;
border-left: none;
}
</style>
</head>
<body>
<div id="map"></div>
<div id="capture"></div>
<script>
var map;
var src = 'https://developers.google.com/maps/documentation/javascript/examples/kml/westcampus.kml';
function initMap() {
map = new google.maps.Map(document.getElementById('map'), {
center: new google.maps.LatLng(-19.257753, 146.823688),
zoom: 2,
mapTypeId: 'terrain'
});
var kmlLayer = new google.maps.KmlLayer(src, {
suppressInfoWindows: true,
preserveViewport: false,
map: map
});
kmlLayer.addListener('click', function(event) {
var content = event.featureData.infoWindowHtml;
var testimonial = document.getElementById('capture');
testimonial.innerHTML = content;
});
}
</script>
<script async
src="https://maps.googleapis.com/maps/api/js?key=YOUR_API_KEY&callback=initMap">
</script>
</body>
</html>
시작하기
다음은 이 튜토리얼을 위한 지도 및 사이드바를 만드는 단계입니다.
가져올 KML 파일 설정
KML 파일은 KML 표준을 준수해야 합니다. 이 표준에 대한 자세한 내용은 Open Geospatial Consortium 웹사이트를 참고하세요. Google의 KML 문서에서도 언어를 설명하고 참조 및 개념적 개발자 문서를 모두 제공합니다.
KML 파일이 없는 학습자는 다음을 할 수 있습니다.
이 튜토리얼에서 다음 KML 파일을 사용합니다.
https://developers.google.com/maps/documentation/javascript/examples/kml/westcampus.kml
웹에서 KML 파일을 찾습니다. Google의
filetype
검색 연산자를 사용할 수 있습니다.velodromes
를 원하는 검색어로 대체하거나 검색어를 완전히 생략하여 모든 KML 파일을 찾으세요.
직접 파일을 만드는 경우 이 예시의 코드는 다음을 가정합니다.
- 인터넷에서 파일을 공개적으로 호스팅했습니다. 이는 Google 서버가 지도에 표시할 콘텐츠를 찾아서 검색할 수 있도록 KML을
KMLLayer
에 로드하는 모든 애플리케이션의 요구사항입니다. - 파일이 비밀번호로 보호되는 페이지에 있지 않습니다.
- 지형지물에 정보 창 콘텐츠가 있습니다. 이 콘텐츠는
description
요소에 포함하거나ExtendedData
요소 및 항목 교체를 사용하여 포함할 수 있습니다(자세한 내용은 아래 참고). 둘 다 지형지물의infoWindowHtml
속성으로 액세스할 수 있습니다.
ExtendedData 요소
이 튜토리얼의 KML 파일에는 ExtendedData
요소에 지형지물 정보가 포함되어 있습니다. 이 정보를 지형지물의 설명으로 가져오려면 기본적으로 BalloonStyle
태그의 변수인 항목 대체를 사용하세요.
아래 표에는 이 섹션의 코드가 설명되어 있습니다.
코드 및 설명 | |
---|---|
|
KML 파일에는 모든 위치표시에 적용되는 단일 Style 요소가 있습니다. 이 Style 요소는 #[video] 의 값을 BalloonStyle 의 텍스트 요소에 할당합니다.$[x] 형식은 KML 파서에 video 라는 Data 요소를 찾아서 풍선 텍스트로 사용하도록 지시합니다. |
|
각 Placemark 에는 Data 요소가 포함된 ExtendedData 요소가 포함되어 있습니다.
각 Placemark 에는 이름 속성이 video 인 단일 Data 요소가 있습니다.이 튜토리얼의 파일은 삽입된 YouTube 동영상을 각 위치표시의 풍선 텍스트 값으로 사용합니다. |
항목 대체에 대한 자세한 내용은 KML 문서의 맞춤 데이터 추가 장을 참고하세요.
KMLLayer 표시
지도 초기화
다음 표에서는 이 섹션의 코드를 설명합니다.
코드 및 설명 | |
---|---|
|
지도에 KML을 표시하려면 먼저 지도를 만들어야 합니다. 이 코드는 새 Google 지도 객체를 만들고 중심 및 확대/축소할 위치를 알려주고 지도를 div 에 연결합니다.Google 지도 만들기의 기본사항에 관한 자세한 내용은 웹사이트에 Google 지도 추가하기 튜토리얼을 참고하세요. |
KMLLayer 만들기
다음 표에서는 KMLLayer를 만드는 코드를 설명합니다.
코드 및 설명 | |
---|---|
|
KML을 표시할 새로운 KMLLayer 객체를 만듭니다. |
|
KMLLayer 생성자가 KML 파일의 URL을 설정합니다. 또한 다음을 실행하는 KMLLayer 객체의 속성도 정의합니다.
|
사이드바에 데이터 표시
이 섹션에서는 지도의 지형지물을 클릭할 때 사이드바에 정보 창 콘텐츠를 표시하는 설정에 대해 설명합니다. 이는 다음과 같은 작업을 통해 실행됩니다.
- KMLLayer 지형지물의 클릭 이벤트 수신
- 클릭된 지형지물의 데이터 가져오기
- 이 데이터를 사이드바에 쓰기
이벤트 리스너 추가
Google 지도에서는 클릭이나 키보드 키 누름과 같은 지도의 사용자 이벤트를 수신 대기하고 이에 응답하기 위한 기능을 제공하며, 이러한 click
이벤트를 위한 리스너를 추가합니다.
아래 표에는 이 섹션의 코드가 설명되어 있습니다.
코드 및 설명 | |
---|---|
|
kmlLayer.addListener 이벤트 리스너는 다음 항목에 초점을 맞춥니다.
|
사이드바에 KML 지형지물 데이터 쓰기
튜토리얼의 이 단계에서는 레이어의 지형지물에서 클릭 이벤트를 캡처했습니다. 이제 지형지물의 데이터와 정보 창 콘텐츠를 사이드바에 쓰도록 애플리케이션을 설정할 수 있습니다.
아래 표에는 이 섹션의 코드가 설명되어 있습니다.
코드 및 설명 | |
---|---|
|
정보 창 콘텐츠를 변수에 씁니다. |
|
쓸 div 를 파악하고 그 안의 HTML을 지형지물의 콘텐츠로 바꿉니다.
|
|
다음 코드 줄은 addListener 생성자 내의 함수가 됩니다.
|
이제 지도에서 KML 지형지물을 클릭할 때마다 사이드바가 업데이트되어 정보 창 콘텐츠가 표시됩니다.
추가 정보
KML 파일 사용에 대해 자세히 알아보세요.