본문 바로가기
JavaScript

[Javascript] 네이버 지도 api를 사용해서 지도 표시 및 마커 찍기

by teamnova 2022. 7. 6.

오늘은 네이버 지도 api 를 사용해서 지도를 띄우고 마커를 찍어보겠습니다.

 

먼저 네이버 클라우드 플랫폼의 Maps 서비스 페이지에 들어가서 로그인을 한 뒤, '이용 신청하기' 버튼을 클릭합니다.

https://www.ncloud.com/product/applicationService/maps

 

NAVER CLOUD PLATFORM

cloud computing services for corporations, IaaS, PaaS, SaaS, with Global region and Security Technology Certification

www.ncloud.com

 

Application 등록을 누르면 Application 이름을 설정하고, Service 선택 및 서비스 환경 등록하는 페이지로 이동합니다.

어플리케이션 이름을 입력하고, Maps 중에서 Web Dynamic Map 서비스를 선택합니다.

그리고 네이버 지도 api 를 사용할 서비스 url을 입력합니다.

이 포스팅에서는 localhost 에서 진행하기 때문에 http://localhost 라고 추가했습니다.

등록이 완료되면 등록된 application 정보를 확인할 수 있습니다.

인증정보 버튼을 누르면 Application Key를 확인할 수 있습니다. 그 중에서 Client ID 를 복사해둡니다.

 

 

 

이제 간단한 예제와 함께 네이버지도 api를 사용해보겠습니다.

 

NAVER 지도 API v3을 로드하려면 아까 복사한 Client ID가 필요합니다. 

<head> 태그 안에 아래 코드를 추가합니다. "YOUR_CLIENT_ID" 부분에 복사한 id를 입력합니다.

<script type="text/javascript" 
	src="https://openapi.map.naver.com/openapi/v3/maps.js?ncpClientId=YOUR_CLIENT_ID"></script>

 

그리고 웹 페이지에 지도를 삽입할 DOM 요소가 필요합니다. <body> 태그 안에 다음 코드를 추가합니다.

<div id="map" style="width:100%; height:800px;"></div>

이제 지도를 생성하겠습니다. Map 클래스는 지도를 표현하는 클래스로, new 연산자를 이용해서 새 인스턴스를 생성합니다.

새 인스턴스를 만들 때 두 가지 인수를 전달합니다.

첫번째 인수는 지도를 표현할 컨테이너 요소를 가리킵니다. 방식은 해당 DOM 요소의 id 문자열을 직접 입력하거나, 또는 document.getElementById 메소드를 이용해서 해당 DOM 요소의 참조를 전달할 수 있습니다. 첫번째 인수는 반드시 전달해야 합니다.

두번째 인수는 지도의 속성을 초기화하는데 사용되는 지도 옵션입니다. 

var map = new naver.maps.Map('map', {
    center: new naver.maps.LatLng(37.5112, 127.0981), // 잠실 롯데월드를 중심으로 하는 지도
    zoom: 15
});

// var map = new naver.maps.Map(document.getElementById('map'), {
//     center: new naver.maps.LatLng(37.5112, 127.0981), // 잠실 롯데월드를 중심으로 하는 지도
//     zoom: 15
// });

지도 옵션은 Map 클래스의 새 인스턴스를 생성할 때 반드시 전달할 필요는 없습니다. 다음과 같이 옵션 없이 지도 객체를 생성하면 서울 시청을 중심으로 하는 16 레벨의 지도가 생성됩니다. 

var map = new naver.maps.Map('map');

 

이제 마커를 지도 위에 표시해보겠습니다. 지도의 중심인 잠실 롯데월드 위치에 마커를 추가합니다.

var marker = new naver.maps.Marker({
    position: new naver.maps.LatLng(37.5112, 127.0981),
    map: map
});

 

완성된 화면은 다음과 같습니다. 잠실 롯데월드를 중심으로 하는 줌 레벨 15의 지도가 표시되고 롯데월드 위치에 마커도 표시되었습니다.

 

전체 코드입니다.

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0, user-scalable=no">
    <title>네이버지도 스틱코드</title>
    <script type="text/javascript" src="https://openapi.map.naver.com/openapi/v3/maps.js?ncpClientId=YOUR_CLIENT_ID"></script>
</head>
<body>
    <div id="map" style="width:100%; height:800px;"></div>

    <script>

        var map = new naver.maps.Map('map', {
            center: new naver.maps.LatLng(37.5112, 127.0981), // 잠실 롯데월드를 중심으로 하는 지도
            zoom: 15
        });

        var marker = new naver.maps.Marker({
            position: new naver.maps.LatLng(37.5112, 127.0981),
            map: map
        });

    </script>

</body>
</html>

 

참고사이트 : https://navermaps.github.io/maps.js.ncp/docs/tutorial-2-Getting-Started.html