Kakao map SDK로 위치 보여주기
![avatar](/_next/image?url=%2Favatar.png&w=96&q=75)
kidow
@kidow
태그
Kakao map
SDK
설명
카카오맵을 내 맘대로 활용해보기 위한 가장 기본적인 가이드
배포
배포
수정일
Aug 24, 2023 04:54 PM
생성일
Jul 17, 2023 03:31 PM
이 글에서는 카카오맵으로 간단하게 특정 위치를 마킹하는 법에 대해 다룹니다.
API 환경 설정
![notion image](https://www.notion.so/image/https%3A%2F%2Fs3-us-west-2.amazonaws.com%2Fsecure.notion-static.com%2F6608a617-d252-4c37-ae9a-0c3200ca052e%2FUntitled.png?table=block&id=cfeb50c1-5877-47ba-9813-a26896031da2&cache=v2)
먼저 카카오 개발자 센터에 들어갑니다. 카카오 로그인 후 상단에 “내 애플리케이션”을 클릭합니다.
![notion image](https://www.notion.so/image/https%3A%2F%2Fs3-us-west-2.amazonaws.com%2Fsecure.notion-static.com%2F920bd8d9-542d-4672-bba7-13a2e67d77ac%2FUntitled.png?table=block&id=5ba70efc-dbf4-4b92-bc58-39b26f0e93fd&cache=v2)
새 애플리케이션을 추가합니다. 앱 아이콘, 앱 이름, 사업자명을 입력해서 생성합니다.
![notion image](https://www.notion.so/image/https%3A%2F%2Fs3-us-west-2.amazonaws.com%2Fsecure.notion-static.com%2F79dde118-01ed-4277-84b2-d94c827a347e%2FUntitled.png?table=block&id=02dba052-8fa2-412e-b532-b11c0d1e5c80&cache=v2)
위와 같이 4개의 키가 생성됩니다. 저는 이 프로젝트를 삭제했기 때문에 상관없지만, Admin 키는 외부에 노출되서는 안되는 키입니다. 여기서 웹 서비스에 사용할 키는 JavaScript 키입니다.
왼쪽에 “플랫폼” 탭에 들어가서, “Web 플랫폼 등록”을 눌러줍니다. 그리고 다음과 같이 API 사용을 허용할 URL들을 등록합니다.
![notion image](https://www.notion.so/image/https%3A%2F%2Fs3-us-west-2.amazonaws.com%2Fsecure.notion-static.com%2F26aff2eb-4b36-42ce-b56d-07423e4755f2%2FUntitled.png?table=block&id=a39fe0c5-e9fb-498b-933e-1de7f11399fe&cache=v2)
이제 환경 설정 준비는 끝났습니다.
코드 적용
먼저 카카오맵 SDK를 적용해야 합니다. Next.js 기준으로 다음과 같은 코드를 삽입합니다.
import Script from 'next/script' <Script type="text/javascript" src="//dapi.kakao.com/v2/maps/sdk.js?appkey=[JavaScript 키]&libraries=services&autoload=false" async strategy="beforeInteractive" />
async는 꼭 넣어주지 않아도 되고, strategy 또한 상황에 따라 다른 값을 넣어야 할 때도 있습니다. 문서를 보시고 각자 판단하시면 되겠습니다.
카카오맵 UI 라이브러리를 불러옵니다.
npm install react-kakao-maps-sdk
카카오맵을 마커와 함께 렌더링하는 가장 기본적인 방식은 다음과 같습니다.
import { Map, MapMarker } from 'react-kakao-maps-sdk' export default function KakaoMap() { return ( <Map center={{ lat: 33.450701, lng: 126.570667 }} style={{ width: '100%', height: '100%' }} > <MapMarker position={{ lat: 33.450701, lng: 126.570667 }} /> </Map> ) }
lat은 위도(latitude), lng은 경도(longitude)입니다. 홈페이지에서 제가 보여주고 있는 아래 지도는 다음과 같이 구성했습니다.
![notion image](https://www.notion.so/image/https%3A%2F%2Fs3-us-west-2.amazonaws.com%2Fsecure.notion-static.com%2Fa7ddda92-3fe1-484c-ba28-c662aafc44e4%2FUntitled.png?table=block&id=bda46c1c-53ce-47ab-ba4f-6a64955bcd67&cache=v2)
const lat = 37.5744985 const lng = 127.1926473 <Map center={{ lat, lng }} className="h-full w-full" draggable={false} zoomable={false} level={9} > <MapMarker position={{ lat, lng }} /> </Map>
draggable을 false로 두면 지도를 움직일 수 없고, zoomable을 false로 두면 확대/축소할 수 없으며, level을 통해 지도의 확대 레벨을 지정할 수 있습니다.
참고 사이트
- 카카오 개발자 센터(https://developers.kakao.com/)
- Next.js <Script> (https://nextjs.org/docs/app/api-reference/components/script)
- react-kakao-maps-sdk 문서(https://react-kakao-maps-sdk.jaeseokim.dev/)
- 위도 경도 찾기(https://웹툴.com/blog/map-coordinates)
- Kakao map
- SDK