[React] 공공데이터 포털 오픈 API 호출하기(+Axios 라이브러리)
https://www.data.go.kr/ 공공데이터 포털국가에서 보유하고 있는 다양한 데이터를『공공데이터의 제공 및 이용 활성화에 관한 법률(제11956호)』에 따라 개방하여 국민들이 보다 쉽고 용이하게 공유
hyjang.tistory.com
이전 게시물에서는 공공데이터 포털 사이트에서 자전거 사고 다발지역 오픈 API소스를 가져왔다.
이 데이터에서 가져온 위도, 경도 데이터를 사용하여 카카오 지도에 표시하기 위해 먼저 카카오 지도 API를 가져오는 방법을 알아보려 한다.
Kakao Developers
카카오 API를 활용하여 다양한 어플리케이션을 개발해보세요. 카카오 로그인, 메시지 보내기, 친구 API, 인공지능 API 등을 제공합니다.
developers.kakao.com
먼저 카카오 개발자 사이트에 로그인 후 내 애플리케이션에서 앱을 만든다.
이런식으로 앱을 만든 후 앱 설정으로 들어가 '앱 키' 페이지에 들어가면
네이티브 앱 키, REST API 키, JavaScript 키, Admin 키가 있는데 그 중 JavaScript 키로 카카오 지도를 가져올 수 있다.
https://apis.map.kakao.com/web/guide/#start
위 페이지에 들어가면 작성 코드가 나온다.
한번 순서대로 진행해보자.
import { useEffect } from 'react';
import './App.css';
import useFetch from './hooks/useFetch';
function App() {
const data = useFetch(`${process.env.REACT_APP_API_URL}?ServiceKey=${process.env.REACT_APP_API_KEY}&searchYearCd=2015&siDo=11&guGun=680&type=json&numOfRows=10&pageNo=1`);
return (
<div className="App">
<div id="map" style={{width:'500px', height:'400px'}}></div>
</div>
);
}
export default App;
먼저 지도가 띄워질 div#map 태그를 추가한다.
<script type="text/javascript" src="//dapi.kakao.com/v2/maps/sdk.js?appkey=발급받은 APP KEY를 넣으시면 됩니다."></script>
그리고 실제 지도를 그려주는 JavaScript API를 가져오는데, 발급받은 APP KEY는 방금 카카오 개발자 사이트에서 받은 JavaScript 키이다.
위 API 키는 실행되는 코드보다 앞에 있어야 하기 때문에 public 폴더에 있는 index.html에서 head태그 하단에 추가해준다.
이제 지도를 띄우는 코드를 작성할 것이다.
카카오 사이트에 있는 코드는 아래와 같다.
var container = document.getElementById('map'); //지도를 담을 영역의 DOM 레퍼런스
var options = { //지도를 생성할 때 필요한 기본 옵션
center: new kakao.maps.LatLng(33.450701, 126.570667), //지도의 중심좌표.
level: 3 //지도의 레벨(확대, 축소 정도)
};
var map = new kakao.ma
리액트에서는 이 코드를 useEffect를 사용하여 마운트 시점에 불러오도록 한다.
최종 코드
import { useEffect } from 'react';
import './App.css';
import useFetch from './hooks/useFetch';
const { kakao } = window;
function App() {
const data = useFetch(`${process.env.REACT_APP_API_URL}?ServiceKey=${process.env.REACT_APP_API_KEY}&searchYearCd=2015&siDo=11&guGun=680&type=json&numOfRows=10&pageNo=1`);
useEffect(()=>{
const container = document.getElementById('map'); //지도를 담을 영역의 DOM 레퍼런스
const options = { //지도를 생성할 때 필요한 기본 옵션
center: new kakao.maps.LatLng(33.450701, 126.570667), //지도의 중심좌표.
level: 3 //지도의 레벨(확대, 축소 정도)
};
new kakao.maps.Map(container, options); //지도 생성 및 객체 리턴
},[])
return (
<div className="App">
<div id="map" style={{width:'500px', height:'400px'}}></div>
</div>
);
}
export default App;
주의사항
여기서 카카오 객체를 따로 빼주지않으면 위 처럼 오류가 나오는데, 이 부분은 함수형 컴포넌트 외부에 const { kakao } = window 를 작성해주면 된다.
'Study > React' 카테고리의 다른 글
[JavaScript/React] 배열 랜덤 섞기 (피셔-예이츠 알고리즘) (1) | 2024.10.15 |
---|---|
[React] 공공데이터 포털 오픈 API 호출하기(+Axios 라이브러리) (0) | 2024.09.26 |
[React] 게시글 이미지 업로드 구현하기 (0) | 2024.08.30 |
[React] Firebase로 앱 배포하기 (0) | 2024.08.07 |
[React/Next.js] 스와이퍼(swiper) 컨트롤러 커스텀하기 (0) | 2024.08.02 |