API 📜

[API] 카카오맵 사용하기

yundi 2024. 2. 21. 16:45

🗺️ 카카오맵 API

지금까지는 관리자 모드에서 매장을 등록했으니 사용자가 볼 수 있는 화면을 만들어보겠다!

장소를 등록했으니 사용자들이 매장을 찾기 쉽게 카카오맵 API를 사용해서 위치를 표시했다.

 

https://apis.map.kakao.com/web/

카카오에서 API를 사용하는 방법에 대해서 아주 잘 설명해놓아서 가져와서 지도만 띄우는데는 진짜 5분도 안걸린 것 같다!

친절한 카카오 : )

 

html에 지도가 들어갈 컨테이너를 넣어준다.

<div id="map" style="width:650px;height:510px;"></div>

 

페이지가 로드될 때 li의 첫번째에 있는 주소값에 마커가 생성되도록 초기값을 설정했다.

li를 클릭할 때마다 해당 장소로 마커가 이동되도록 해주었다.

// 지도를 표시할 div 요소
var mapContainer = document.getElementById('map');

// 지도를 생성하고 초기화
var map = new kakao.maps.Map(mapContainer, {
    center: new kakao.maps.LatLng(33.450701, 126.570667), // 초기 지도 중심 좌표
    level: 3 // 초기 지도 확대 레벨
});

// 마커를 담을 변수
var marker;

// 마커를 설정하고 정보 창을 표시
function setMapMarker(coords, content) {
    // 새로운 마커 생성
    marker = new kakao.maps.Marker({
        map: map,
        position: coords
    });

    // 정보 창 생성
    var infowindow = new kakao.maps.InfoWindow({
        content: content
    });

    // 정보 창 열기
    infowindow.open(map, marker);

    // 마커 위치를 지도 중심으로 설정
    map.setCenter(coords);
}

// 지도 확대 레벨을 초기화하는 함수
function resetMap() {
    map.setLevel(3);
}

// 주소를 받아와 지도에 마커를 표시하는 함수
function positionM(address, name) {
    var geocoder = new kakao.maps.services.Geocoder();
    geocoder.addressSearch(address, function (result, status) {
        if (status === kakao.maps.services.Status.OK) {
            var coords = new kakao.maps.LatLng(result[0].y, result[0].x);
            var content = '<div style="padding:5px; font-size:12px;">' + name + '</div>';
            setMapMarker(coords, content);
        }
    });
}

// 초기화면에서 첫 번째 장소의 주소와 이름으로 지도에 마커 표시
$(document).ready(function () {
    var defaultAddress = $('.store_list > ul > li:first-child .seum_addr1').val();
    var defaultName = $('.store_list > ul > li:first-child .store_tit').text();
    positionM(defaultAddress, defaultName);

    // 목록에서 다른 장소를 클릭했을 때의 이벤트 처리
    $('.store_list > ul > li').click(function () {
        var address = $(this).find('.seum_addr1').val();
        var name = $(this).find('.store_tit').text();
        positionM(address, name);
        resetMap();
    });
});

 

 

다음 번에는 마커랑 인포윈도우를 커스텀 해보려고 한다. 😀