본문 바로가기
React

React / typescript 카카오 지도 api 사용

by KDW999 2023. 4. 18.

https://developers.kakao.com/

 

Kakao Developers

카카오 API를 활용하여 다양한 어플리케이션을 개발해보세요. 카카오 로그인, 메시지 보내기, 친구 API, 인공지능 API 등을 제공합니다.

developers.kakao.com

 

 

1. 위 사이트에서 시작하기 → 카카오 로그인 → 애플리케이션 추가하기 → 앱 이름 / 사업자 명은 적고 싶은데로 적어준다.

 

2. 만든 내 애플리케이션에서 위 사진처럼 앱 키를 볼 수 있다.

- 해당 키는 본인만 알고 있어야한다.

- Git에 올려야되는 경우라면 해당 키를 변수명으로 만들어서 사용하고 키는 .gitignore로 git에 올라가지 않게 해주자 

 

3. 만든 react 프로젝트에서 public → index.html에서 head칸 안에

<script type="text/javascript" src="//dapi.kakao.com/v2/maps/sdk.js?appkey=발급받은 APP KEY를 사용하세요"></script>

코드를 넣어준 후 appkey= 뒤에 있는 한글은 지우고 위에서 받은 JavaScript 키를 넣어준다.

 

 

4. 코드 작성

App.tsx에서 바로 적어줘도 되나 난 따로 파일을 만들었다.

 

타입스크립트에선 함수 컴포넌트 내부에 kakao를 인식을 못해서 컴포넌트 외부에서 kakao 변수를 만들고 window에 있는 kakao를 가져와야 된다고 하더라 

import React, { useEffect } from 'react'

const kakao = (window as any).kakao;

export default function KakaoMap() {
  
  useEffect(() => {
    const container = document.getElementById('map'); //? 지도를 담을 영역의 DOM 레퍼런스
    const options = {
        center : new kakao.maps.LatLng(35.153513,129.059220), //? 지도의 중심좌표.
        level : 3 //? 지도의 확대 레벨
    };

    const map = new kakao.maps.Map(container, options); //? 지도 생성 및 객체 리턴
   },[])

    return (
    <div id = "map" style={{ //? 지도화면 담을 공간
        width : '1700px',
        height : '900px'
    }}>KakaoMap</div>
  )
}

 

 

변수 대신 interface 사용

  declare global{ //? 전역 변수로 선언, 사용 시 kakao 앞에 window 붙이기
   interface Window{
     kakao : any;
   }
 }

export default function KakaoMap() {
  
  useEffect(() => {
    const container = document.getElementById('map'); //? 지도를 담을 영역의 DOM 레퍼런스
    const options = {
        center : new window.kakao.maps.LatLng(35.153513,129.059220), //? 지도의 중심좌표.
        level : 3 //? 지도의 확대 레벨
    };

    const map = new window.kakao.maps.Map(container, options); //? 지도 생성 및 객체 리턴

   },[])

    return (
    <div id = "map" style={{ //? 지도화면 담을 공간
        width : '1700px',
        height : '900px'
    }}>KakaoMap</div>
  )
}

 

App.tsx에서 호출해서 npm run start 실행시켜주면

 

이렇게 나온다.

 

마커는 따로 코드 추가해주었다.

import React, { useEffect } from 'react'

const kakao = (window as any).kakao;

export default function KakaoMap() {
  
  useEffect(() => {
    const container = document.getElementById('map'); //? 지도를 담을 영역의 DOM 레퍼런스
    const options = {
        center : new kakao.maps.LatLng(35.153513,129.059220), //? 지도의 중심좌표.
        level : 3 //? 지도의 확대 레벨
    };

    const map = new kakao.maps.Map(container, options); //? 지도 생성 및 객체 리턴
    
    const markerPosition = new kakao.maps.LatLng(35.153513,129.059220); //? 마커 표시 위치 

    const marker = new kakao.maps.Marker({ position : markerPosition}); //? 마커 생성

    marker.setMap(map);
   },[])

    return (
    <div id = "map" style={{ //? 지도화면 담을 공간
        width : '1700px',
        height : '900px'
    }}>KakaoMap</div>
  )
}

 

 

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

 

'React' 카테고리의 다른 글

React 토큰 로그인 유지  (0) 2023.03.29
React / Spring 통신  (0) 2023.03.27
[공부] Hook 함수  (1) 2023.02.23
[공부] JSX와 TSX  (0) 2023.02.21
[공부] 타입스크립트 문법 및 개념 ES6 TypeScript  (0) 2023.02.21

댓글