본문 바로가기

WEB_TECH/HTML5

Google Maps Javascript API V3

Google Maps Javascript API V3 는 그 유명한 구글지도 세번째 번입니다.


https://developers.google.com/maps/documentation/javascript/tutorial


위 경로의 Hello, World 예제를 살펴보도록 하겠습니다.

이 예제는 

HTML에 캔버스로 지도가 나올 영역을 정의하고 

위도 경도를 입력하고 

옵션값을 객체로 정의해서 

캔버스에 지도를 그리는 형식으로 되어 있습니다.


주의 할 점

1. <!DOCTYPE html> 선언을 사용하여 HTML5로 선언

2. script 태그를 사용하여 Maps API 자바스크립트를 포함

3. 지도를 넣을 'map_canvas'라는 div 요소를 생성

4. 다양한 지도 속성을 담고 있는 자바스크립트 객체 리터럴을 만듬

5. 'map' 객체를 만들기 위해 자바스크립트 함수를 작성

6. body 태그의 onload 이벤트에서 지도 객체를 초기화



지도 옵션에 대해 알아볼까요?
var myLatlng = new google.maps.LatLng(-34.397, 150.644);
var myOptions = {
  zoom
: 8,
  center
: myLatlng,
  mapTypeId
: google.maps.MapTypeId.ROADMAP
};
ROADMAP - 일반적인 기본 2D 타일의 Google 지도를 표시합니다.
SATELLITE - 사진 타일을 표시합니다.
HYBRID - 사진 타일과 도로, 도시 등 주요 지형지물을 담고 있는 타일 레이어를 함께 표시합니다.
TERRAIN - 고도 및 수경(산, 강 등)을 표시하기 위한 물리적 기복 타일을 표시합니다.
적절하게 옵션을 바꿔서 실행해 보는 것도 재미있을 것입니다.


google.maps.Map - 기본 객체
var map = new google.maps.Map(document.getElementById("map_canvas"),
    myOptions
);
지도를 표시하는 자바스크립트 클래스는 Map클래스입니다.
이 클래스 객체는 페이지에 지도 하나를 정의합니다. 
이 클래스의 인스턴스를 둘 이상 만드는 것도 가능합니다. 각 객체는 페이지상에서 개별 지도들을 나타냅니다.
new 연산자로 클래스의 새 인스턴스를 생성합니다.

인스턴스를 만들때 페이지의 <div>요소를 지도의 컨테이너로 지정합니다.
map이라는 변수를 정의하고 이변수를 새 Map객체에 할당합니다.
또한 myOption 객체 리터럴 내에서 정의된 옵션을 전달합니다.  이 옵션은 지도의 속성을 초기화하는데 사용합니다.

google.maps.Map(opts? ) : opts 매개변수에 전달된 선택적 매개변수를 사용하여 새 지도를 만듭니다.


지도 로드하기
<body onload="initialize()">
DOM이 작성되고 외부이미지와 스크립트가 수신되어 document 객체에 통합됩니다.
페이지가 완전히 로드된 후에 지도가 배치됩니다.


위도와 경도
var myLatlng = new google.maps.LatLng(위도, 경도)
지도상의 위치를 전달하는 방법은 google.maps.LatLng객체를 사용합니다.
위도 경도를 서울에 맞게 넣으면 서울지도가 나오겠죠.
LatLng 객체는 다양하게 사용됩니다.
google.maps.Marker 객체는 생성자 내에 LatLng를 사용하여 지도에서 지정된 지리적 위치에 마커 오버레이를 표시합니다.


줌레벨

var myOptions = {

      zoom: 8,

      center: latlng,

      mapTypeId: google.maps.MapTypeId.ROADMAP

};

여기서 zoom:8 이라는 속성은 지도의 고도를 의미합니다.

줌레벨이 0이면 완전히 축소된 지구의 지도에 해당하고 줌레벨이 높아지면 더 높은 해상도로 확대됩니다.



[전체 소스]


<!DOCTYPE html>

<html>

<head>

<meta name="viewport" content="initial-scale=1.0, user-scalable=no" />


<style type="text/css">

  html { height: 100% }

  body { height: 100%; margin: 0px; padding: 0px }

  #map_canvas { height: 100% }

</style>


<script type="text/javascript"

    src="https://maps.google.com/maps/api/js?sensor=false">

</script>


<script type="text/javascript">

  function initialize() {

    var latlng = new google.maps.LatLng(-34.397, 150.644);

    var myOptions = {

      zoom: 8,

      center: latlng,

      mapTypeId: google.maps.MapTypeId.ROADMAP

    };

    var map = new google.maps.Map(document.getElementById("map_canvas"),

        myOptions);

  }


</script>

</head>

<body onload="initialize()">

  <div id="map_canvas" style="width:100%; height:100%"></div>

</body>

</html>


아래 이미지 처럼 호주 시드니 주변이 나오네요.