본문 바로가기
JavaScript

[JavaScript] OpenStreetMap 지도 출력하여 특정 위치에 마커 찍기

by teamnova 2024. 11. 3.
728x90

안녕하세요,

 

오늘은 OpenStreetMap 지도를 출력하여 특정 위치에 마커를 찍고, 마커 클릭 시 마커 위에 팝업을 여는 예제를 만들어보도록 하겠습니다,

 

마커를 찍고자 하는 위치는 위도, 경도로 설정해야 합니다. 

 

위도, 경도를 활용한 마커 찍는 예제입니다. 

 

<!DOCTYPE html>  
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Leaflet OpenStreetMap Marker 예제</title>
  <link rel="stylesheet" href="https://unpkg.com/leaflet@1.7.1/dist/leaflet.css" />
  <style>
    #map { height: 500px; width: 100%; }
  </style>
</head>
<body>

  <div id="map"></div> <!-- 지도가 표시될 요소 -->

  <script>
    // Leaflet를 사용한 지도 설정
    const map = L.map('map').setView([37.5665, 126.9780], 13); // 서울 위치 및 줌 설정
    L.tileLayer('https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png', { // OSM 타일 추가
      attribution: OpenStreetMap contributors'
    }).addTo(map);

    // 특정 위치에 마커 추가
    const targetLatLng = [37.480514102448545, 126.98402022805749]; // 마커 위치
    const marker = L.marker(targetLatLng).addTo(map); // 마커 추가
   
    // 팝업 내용 설정
    marker.bindPopup("<b>여기입니다! 클릭하여 확대</b>");

    // 마커 클릭 시 팝업 열기 및 이벤트 등록
    marker.on("click", function () {
      marker.openPopup(); // 팝업 열기
      document.querySelector(".leaflet-popup-content").addEventListener("click", function() {
        map.setView(targetLatLng, 17); // 클릭 시 줌 레벨 17로 확대
      });
    });

    // 마커 위치로 포커스 이동
    map.setView(targetLatLng, 15); // 줌 레벨 15로 포커스 이동
  </script>

</body>
</html>

 

 

시연 영상입니다.