반응형

구글 Maps API를 이용해서 지도에 다중 마커를 표시하고 마커 클릭 시 화면 중심이 해당 마커로 이동하고 HTML로 인포 윈도우를 표시하는 예제입니다.

 

건대입구역 쪽 마커도 클릭 시 정보가 잘 나오는 것을 확인하였습니다.

현재 개발중인 버스정보조회 앱 서비스 프로젝트에서
해당 정류소 클릭 시 곧 도착하는 버스들의 정보들을 출력하는 데 사용할 수 있을 것 같습니다.

 

<index.html>

<!DOCTYPE html>
<html>

<head>
    <title>Google Maps</title>

    <style type="text/css">
        /* Set the size of the div element that contains the map */
        #map {
            height: 400px;
            /* The height is 400 pixels */
            width: 100%;
            /* The width is the width of the web page */
        }
    </style>
    <script>
        function initMap() {

            // 지도 스타일
            const map = new google.maps.Map(document.getElementById("map"), {
                zoom: 14,
                center: { lat: 37.5407622, lng: 127.0706095 },
            });

            // 마커 정보
            var locations = [
                { place: "건대입구역", lat: 37.539922, lng: 127.070609 },
                { place: "어린이대공원역", lat: 37.547263, lng: 127.074181 },
            ];

            //인포윈도우
            var infowindow = new google.maps.InfoWindow();

            //마커 생성
            for (var i = 0; i < locations.length; i++) {
                var marker = new google.maps.Marker({
                    map: map,
                    //label: locations[i].place,
                    position: new google.maps.LatLng(locations[i].lat, locations[i].lng),
                });


                google.maps.event.addListener(marker, 'click', (function(marker, i) {
                    return function() {
                        //html로 표시될 인포 윈도우의 내용
                        infowindow.setContent(locations[i].place);
                        //인포윈도우가 표시될 위치
                        infowindow.open(map, marker);
                    }
                })(marker, i));
                
                if (marker) {
                    marker.addListener('click', function() {
                        //중심 위치를 클릭된 마커의 위치로 변경
                        map.setCenter(this.getPosition());
                        //마커 클릭 시의 줌 변화
                        map.setZoom(14);
                    });
                }



            }
        }


    </script>
</head>

<body>
    <h3>구글 맵</h3>
    <!--The div element for the map -->
    <div id="map"></div>

    <!-- Async script executes immediately and must be after any DOM elements used in callback. -->
    <script
        src="https://maps.googleapis.com/maps/api/js?key=발급받은API_KEY&callback=initMap&libraries=&v=weekly"
        async></script>
</body>

</html>

 

 

 

 

 

반응형

+ Recent posts