터미널에서 지도 SDK를 설치해줍니다.
npm install react-kakao-maps-sdk
또는
yarn add react-kakao-maps-sdk
정상적으로 설치가 완료된 것을 확인하기 위해 setting.json 파일에서 react-kakao-maps-sdk
를 확인합니다.
kakao developers에서 시작하기를 누르고 로그인을 완료해줍니다.
애플리케이션을 추가해줍니다.
애플리케이션을 추가하고 해당하는 앱 키가 있는데 저는 JavaScript 키를 사용했습니다.
상단 네비게이션 바의 문서
를 클릭하고 밑으로 내려 지도
로 이동해줍니다. 이후 들어간 화면에서 지도 SDK 웹 사이트를 클릭하여 kakao 지도 web API 사이트로 이동해줍니다.
Android, Web, IOS 중에서 해당되는 플래폼을 눌러서 이동해줍니다.
굉장히 다양한 샘플이 있는데 우선 Next 환경에서 API를 불러와야 합니다.
const KAKAO_SDK_URL = '//dapi.kakao.com/v2/maps/sdk.js?appkey=키값&autoload=false';
const KakaoMap = () => {
return (
<div></div>
);
};
export default KakaoMap;
키값
에 해당하는 JavaScript 키 값을 넣어줍니다. .env
환경변수를 이용해서 넣으면 더 좋겠죠!!🤗
autoload
는false
로 설정하여API script
를 불러올 때 자동으로 지도 라이브러리를 로드하지 않도록 설정하였습니다. 이렇게 설정해야 지도 API를 사용하지 않는 페이지에서는 script가 불필요하게 로드되지 않기 때문입니다.
Kakao Maps API 공식 문서를 확인해보면
script
태그를 이용해 API를 불러오고 있습니다. 똑같이 Next에서도 불러와야합니다.
import Script from 'next/script';
const KAKAO_SDK_URL = '//dapi.kakao.com/v2/maps/sdk.js?appkey=키값&autoload=false';
const KakaoMap = () => {
return (
<div>
<Script src={KAKAO_SDK_URL} strategy='beforeInteractive'/>
</div>
);
};
export default KakaoMap;
Next에서 제공하는 Script Component
에 Kakao key
를 연결해줍니다.
지도 생성하기에 들어가면 위의 사진처럼
var map = new kakao.maps.Map(mapContainer, mapOption);
가 있습니다.
여기서 중요한건 kakao.maps.Map
입니다. 우리는 Map
이라는 컴포넌트를 불러올 것이기 때문이죠!
Next에서 Map
을 입력하면 react-kakao-maps-sdk
에서 가져오기를 추가할 수 있습니다.
그리고 이 Map component
를 Ctrl을 누른 상태에서 클릭하면 해당되는 component 파일로 이동하게 되는데 여기서 사용법을 알 수가 있습니다.(물론, kakao api 공식 문서에서 사용한 옵션을 보고 사용하셔도 됩니다.)
Map component
에는 필수 속성으로center
가 요구됩니다. center는 위의 사진처럼 중심으로 설정할 위치를 말합니다.
center 속성은 경도와 위도로 설정되므로 구글 지도를 통해 원하는 위치의 경도와 위도를 설정하면 됩니다. 저는 강남역으로 설정하였습니다.
import Script from 'next/script';
import { Map } from 'react-kakao-maps-sdk';
const KAKAO_SDK_URL = '//dapi.kakao.com/v2/maps/sdk.js?appkey=키값&autoload=false';
const KakaoMap = () => {
return (
<div>
<Script src={KAKAO_SDK_URL} strategy='beforeInteractive'/>
<Map center={{lat: 37.497930, lng: 127.027596 }}
style={{ width: '700px', height: '500px' }}></Map>
</div>
);
};
export default KakaoMap;
이제 마커를 추가하면 좋겠네요! 공식 문서에서 마커 생성하기
에 들어가줍니다.
들어가서 확인해보니 마커는 MapMarker component
를 이용하면 됩니다.
MapMarker component
는 필수 속성으로position
이 요구됩니다. position은 마커의 위치를 요구합니다. 마커의 위치는 Map component와 같이 위도와 경도로 결정됩니다.
추가로 일반지도와 스카이뷰를 사용할 수 있는
MapTypeControl component
와 확대/축소가 가능한ZoomControl component
를 추가하였습니다.
전체코드는 다음과 같습니다.
import Script from 'next/script';
import { Map } from 'react-kakao-maps-sdk';
const KAKAO_SDK_URL = '//dapi.kakao.com/v2/maps/sdk.js?appkey=키값&autoload=false';
const KakaoMap = () => {
return (
<div>
<Script src={KAKAO_SDK_URL} strategy='beforeInteractive'/>
<Map center={{lat: 37.497930, lng: 127.027596 }}
style={{ width: '700px', height: '500px' }}>
<MapMarker position={{lat: 37.497930, lng: 127.027596 }}/>
<MapTypeControl/>
<ZoomControl/>
</Map>
</div>
);
};
export default KakaoMap;
완성!!👏👏👏👏👏👏👏