본문 바로가기

개발자노트/웹

HTML - API 사용하기 ( 구글맵API , Marker icon 변경 )

API - 외부 모듈을 연결

구글맵 API를 사용하여 맵을 불러오고, Marker(마커) 아이콘, 속성 등을 바꾸는 법

작동원리는 주석에 달아놨고, 다음에 더 정리해서 축약하고,

CSS와 JS , HTML을 분리한 뒤 정리된 코드를 다시 올리겠다.

 

이용한 출처

좌표 검색기 : https://map.yjhoon.com/naver/

무료 아이콘 링크 : https://icon-icons.com/ko/

구글맵 API : https://mapsplatform.google.com/

 

여기서 중요한것은 

API에서 Key값을 받아서 script에 추가해주어야한다.

YourKey에 자신의 키값을 넣자

 

코드가 길어 수행결과 먼저 보여주겠다.

 

구글API 마커

 

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>구글 맵 API</title>
<style type="text/css">
   *{
      margin: 5px;
      padding: 5px;
   }
   #map{
      width: 500px;
      height: 300px;
      border: 2px solid blue;
   }
    /* 확대/축소 등 구글 지도의 기본 UI 감추기 */
   .gmnoprint, .gm-control-active.gm-fullscreen-control {
        display: none;
   }
</style>
<script src="http://maps.google.com/maps/api/js?key=YourKey&region=kr"></script>
					   							<!--인증키값과 지역값설정-->
</head>
<body>


<div id="map">
</div>
<button id="btn1">지도 중심 이동-1</button>
<button id="btn2">지도 중심 이동-2</button>

<script type="text/javascript">
   var btn1=document.getElementById('btn1');
   btn1.addEventListener('click',func1);
   var btn2=document.getElementById('btn2');
   btn2.addEventListener('click',func2);
   
   var map; // 전역변수로 만들어둬야함
   function initMap() {
	   var coordinates = { // 경도 위도 설정
	     lat: 37.4841305,
	     lng: 126.9343421
	   };
	   var map = new google.maps.Map(document.getElementById('map'), {
	     zoom: 14,
	     center: coordinates, // 정해준 경도,위도가 가운데로 갈 수 있게
	     scrollwheel: true // 우리가 쓴 zoom이랑 같은데 스크롤 기능 활성화
	   });
	   var measle = new google.maps.Marker({ // 마커를 추가하기 위한 기본생성자
	     position: coordinates,		
	     map: map,
	     icon: {
	       url: "https://maps.gstatic.com/intl/en_us/mapfiles/markers2/measle.png",
	       size: new google.maps.Size(7, 7),
	       anchor: new google.maps.Point(4, 4)
	     }
	   });
	   var marker = new google.maps.Marker({ // 마커 재정의
	     position: coordinates,
	     map: map,
	     icon: {
	       url: "img/mark.png", // 마커 이미지 경로
	       labelOrigin: new google.maps.Point(75, 32), // 라벨이 어디에 위치하게 할지
	       size: new google.maps.Size(16,16), // 맵에서 표시될 아이콘 사이즈
	       anchor: new google.maps.Point(8,16) 
	     },
	     label: {
	       text: "우리집", // 라벨에 붙을 이름
	       color: "#C70E20", // 컬러 설정
	       fontWeight: "bold" // 굵게 표시하기 위한 bold체 
	     }
	   });
	 }
	 google.maps.event.addDomListener(window, "load", initMap); // 구글마커가 재정의 된 뒤 호출
   
   function func1(){
	   var coordinates = {
			     lat: 34.694,
			     lng: 135.502
			   };
			   var map = new google.maps.Map(document.getElementById('map'), {
			     zoom: 14,
			     center: coordinates,
			     scrollwheel: true
			   });
			   
     	 var marker = new google.maps.Marker({ // 마커를 담을 생성자 생성
 	     position: coordinates,
 	     map: map,
 	     icon: { // 아이콘에 대한 속성 재정의
 	       url: "img/japan.png", // 아이콘 경로 지정 (url링크 혹은 내 파일경로)
 	       labelOrigin: new google.maps.Point(32,33),
 	       size: new google.maps.Size(16,16),
 	       anchor: new google.maps.Point(32,16)
 	     },
 	     label: {
 	       text: "오사카성",
 	       color: "#C70E20",
 	       fontWeight: "bold"
 	     }
 	   });
      google.maps.event.addDomListener(window, "load", initMap);
   }
   function func2(){
	   var coordinates = {
			     lat: 37.4999989,
			     lng: 127.0354244
			   };
			   var map = new google.maps.Map(document.getElementById('map'), {
			     zoom: 14,
			     center: coordinates,
			     scrollwheel: true
			   });
      	var marker = new google.maps.Marker({
 	     position: coordinates,
 	     map: map,
 	     icon: {
 	       url: "img/school.png",
 	       labelOrigin: new google.maps.Point(75, 32),
 	       size: new google.maps.Size(16,16),
 	       anchor: new google.maps.Point(8,16)
 	     },
 	     label: {
 	       text: "학원",
 	       color: "#C70E20",
 	       fontWeight: "bold"
 	     }
 	   });
      google.maps.event.addDomListener(window, "load", initMap);
   }
</script>

</body>
</html>