๋ฐ๋ก๊ฐ๊ธฐ https://light9639.github.io/React-KaKao-Map/
โจ React-Weather ํ ํ๋ฆฟ โจ
๐ ์ฐ์ ์นด์นด์ค ๊ฐ๋ฐ์ ์ฌ์ดํธ์ ์ ์ํ์ฌ ๊ณ์ ์ ๋ง๋ค๊ณ ๋ก๊ทธ์ธ ํฉ๋๋ค.
1๏ธโฃ ๋ฉ์ธ ํ๋ฉด์ ์๋จ ๋ฉ๋ด ์ค "๋ด ์ ํ๋ฆฌ์ผ์ด์
"์ ์ ํํฉ๋๋ค.
2๏ธโฃ ๋ด ์ ํ๋ฆฌ์ผ์ด์
์์ "์ ํ๋ฆฌ์ผ์ด์
์ถ๊ฐํ๊ธฐ"๋ฅผ ์ ํํฉ๋๋ค.
3๏ธโฃ ์ฑ ์์ด์ฝ, ์ฑ ์ด๋ฆ, ์ฌ์
์๋ช
์ ์
๋ ฅํ๊ณ ์ ์ฅํฉ๋๋ค.
4๏ธโฃ ์ ์ฅ์ด ์๋ฃ๋๋ฉด ์์ฝ ์ ๋ณด ํ์ด์ง์ ์์ฑ๋ "์ฑ ํค"๊ฐ ๋ณด์
๋๋ค.
5๏ธโฃ ํ๋ซํผ ๋ฉ๋ด์ "Webํ๋ซํผ ๋ฑ๋ก"์ ์ ํํฉ๋๋ค.
6๏ธโฃ ์ฌ์ดํธ ๋๋ฉ์ธ์ ์
๋ ฅํ ํ ์ ์ฅํฉ๋๋ค.
7๏ธโฃ Web ์ฌ์ดํธ ๋๋ฉ์ธ์ด ๋ฑ๋ก๋ ๊ฒ์ ๋ณผ ์ ์์ต๋๋ค. ์ด ํ์ด์ง์์ ์ญ์ ๋ ์์ ์ ํ ์ ์์ต๋๋ค.
-
์ฐ์ ๋ฆฌ์กํธ ํ๋ก์ ํธ๋ฅผ ์์ฑํฉ๋๋ค.
npx create-react-app kakaomap
-
index.html์ head์ ๋ค์ ๋ด์ฉ์ ์ถ๊ฐํฉ๋๋ค.
<meta http-equiv="Content-Security-Policy" content="default-src 'self' 'unsafe-inline' https://dapi.kakao.com http://*.daumcdn.net; script-src 'self' 'unsafe-inline' https://dapi.kakao.com http://*.daumcdn.net; img-src 'self' 'unsafe-inline' https://dapi.kakao.com http://*.daumcdn.net;"> <meta http-equiv="X-Content-Security-Policy" content="default-src 'self' 'unsafe-inline' https://dapi.kakao.com http://*.daumcdn.net; script-src 'self' 'unsafe-inline' https://dapi.kakao.com http://*.daumcdn.net; img-src 'self' 'unsafe-inline' https://dapi.kakao.com http://*.daumcdn.net;"> <script type="text/javascript" src="https://dapi.kakao.com/v2/maps/sdk.js?autoload=false&appkey=๋ฐ๊ธ๋ฐ์ํค"></script>
-
App.js๋ฅผ ๋ค์๊ณผ ๊ฐ์ด ์์ ํฉ๋๋ค.
import './App.css'; import { useEffect } from 'react'; function App() { //์คํฌ๋ฆฝํธ ํ์ผ ์ฝ์ด์ค๊ธฐ const new_script = src => { return new Promise((resolve, reject) => { const script = document.createElement('script'); script.src = src; script.addEventListener('load', () => { resolve(); }); script.addEventListener('error', e => { reject(e); }); document.head.appendChild(script); }); }; useEffect(() => { //์นด์นด์ค๋งต ์คํฌ๋ฆฝํธ ์ฝ์ด์ค๊ธฐ const my_script = new_script('https://dapi.kakao.com/v2/maps/sdk.js?autoload=false&appkey=๋ฐ๊ธ๋ฐ์ํค'); //์คํฌ๋ฆฝํธ ์ฝ๊ธฐ ์๋ฃ ํ ์นด์นด์ค๋งต ์ค์ my_script.then(() => { console.log('script loaded!!!'); const kakao = window['kakao']; kakao.maps.load(() => { const mapContainer = document.getElementById('map'); const options = { center: new kakao.maps.LatLng(37.56000302825312, 126.97540593203321), //์ขํ์ค์ level: 3 }; const map = new kakao.maps.Map(mapContainer, options); //๋งต์์ฑ //๋ง์ปค์ค์ const markerPosition = new kakao.maps.LatLng(37.56000302825312, 126.97540593203321); const marker = new kakao.maps.Marker({ position: markerPosition }); marker.setMap(map); }); }); }, []); return ( <div className="App"> <div id="map" className="map"/> </div> ); } export default App;
-
App.css์ class๋ฅผ ์ถ๊ฐํฉ๋๋ค.
.map { width: 100%; height: 600px; align-items: center; justify-content: center; margin-left: auto; margin-right: auto; border-style: solid; border-width: medium; border-color: #D8D8D8; }
- ์ง๋์ ์ขํ๋ URL์์ ์ฐพ์ผ์๋ฉด ๋ฉ๋๋ค.
- ์ถ์ฒ1 : https://codegear.tistory.com/13
- ์ถ์ฒ2 : https://codegear.tistory.com/14