Notice
Recent Posts
Recent Comments
Link
์ผ | ์ | ํ | ์ | ๋ชฉ | ๊ธ | ํ |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
Tags
- ํ๋ก๊ทธ๋๋ฐ
- ๊ฐ์ดํ ์ข ๋ญ๊ฐ๋น
- ์ค๋ธ์
- Java
- html
- K๋ฐฐํฐ๋ฆฌ๋ ๋ณผ๋ฃจ์
- ์ค๋ผํด
- ๋ ์
- ๊ฐ๋ฐ
- ํ์ฒ์ ๋ฆฌํธ๋ฆฌํธ
- ์ํ
- ๋ฐ์ํ
- ์นดํ๋๊ฐ
- Python
- database
- ํ์ด์ฌ
- css
- ๋๊ฐ
- ์ฝ๋ฉ
- ๊น๋ฏธ๊ฒฝ์๋งํ์์
- ๋ฐ์ดํฐ๋ฒ ์ด์ค
- ์๋ฐ์คํฌ๋ฆฝํธ
- ์ํ์ฃผ
- ์นํผ๋ธ๋ฆฌ์ฑ
- ์๋ฐ
- ํฐ์คํ ๋ฆฌ์ฑ๋ฆฐ์ง
- ๋ฐฐ์์ ๋ฐฐ์
- JavaScript
- ์ ๋ฆฌํธ๋ฆฌํธ
- ์ฑ
Archives
- Today
- Total
JiYoung Dev ๐ฅ
[React] ์นด์นด์ค์ง๋API ์ฌ์ฉํ๊ธฐ (2023.06.05) ๋ณธ๋ฌธ
๋ฐ์ํ
React์์ ์นด์นด์ค์ง๋ API ์ฌ์ฉํ๊ธฐ
๐ OPEN API ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ
๐ key ๋ฐ๊ธ๋ฐ๊ธฐ
1. ๋ก๊ทธ์ธ ํ ์ ํ๋ฆฌ์ผ์ด์ ์ถ๊ฐ
React๋ JavaScript ๊ธฐ๋ฐ์ด๋ฏ๋ก JavaScript ์ฝ๋ ์ฌ์ฉํ ์์
2. web ํ๋ซํผ ๋ฑ๋กํ๊ธฐ
๋ง์ฝ jsp/servlet์์๋ ์ฌ์ฉํ ๊ฑฐ๋ผ๋ฉด ํด๋น ์ฃผ์๋ ์ถ๊ฐ(ex. 8080)ํด์ผ ์ฌ์ฉํ ์ ์๋ค!
3. react-kako-maps-sdk ๋ก ๋ฆฌ์กํธ์์ kakao map ์ฌ์ฉํ๊ธฐ
typeScript ์๋ฃํ ์ง์ ํด์ฃผ๋ script >> ์ต๊ทผ ๋จ๋ ์ค
3.1. index.html headํ๊ทธ์ api ์ ๋ ฅ
<script
type="text/javascript"
src="//dapi.kakao.com/v2/maps/sdk.js?appkey=๋ณธ์ธkey&libraries=services,clusterer"
></script>
3.2. react-kakao-maps-sdk ์ค์น
3.3. App.js ์์ฑ
MapMarker, Map > import ํด์ค์ผ ํจ!
import "./App.css";
import { MapMarker, Map } from "react-kakao-maps-sdk";
function App() {
return (
<div>
<Map
center={{ lat: 33.5563, lng: 126.79581 }}
style={{ width: "100%", height: "360px" }}
>
<MapMarker position={{ lat: 33.55635, lng: 126.795841 }}>
<div style={{ color: "#000" }}>Hello World!</div>
</MapMarker>
</Map>
</div>
);
}
export default App;
๐ ์ฌ๋ฌ๊ฐ ๋ง์ปค์ ์ด๋ฒคํธ ๋ฑ๋กํ๊ธฐ1 ํ์ฉํด๋ณด๊ธฐ
index.html
<script
type="text/javascript"c
src="//dapi.kakao.com/v2/maps/sdk.js?appkey=e77e282f01b0b2718596e16811e7e6af&libraries=services,clusterer"
></script>
import React from "react";
import { useMap, MapMarker, Map } from "react-kakao-maps-sdk";
import { useState } from "react";
const App2 = () => {
//์ง๋ ์ค์ฌ ์ขํ๋ฅผ ๋ํ๋ผ states
const [centerLat, setCenterLat] = useState(33.450701);
const [centerLon, setCenterLon] = useState(126.570667);
const [level, setLevel] = useState(3);
const [data, setData] = useState([
{
content: <div style={{ color: "#000" }}>์นด์นด์ค</div>,
latlng: { lat: 33.450705, lng: 126.570677 },
},
{
content: <div style={{ color: "#000" }}>์ํ์ฐ๋ชป</div>,
latlng: { lat: 33.450936, lng: 126.569477 },
},
{
content: <div style={{ color: "#000" }}>ํ
๋ฐญ</div>,
latlng: { lat: 33.450879, lng: 126.56994 },
},
{
content: <div style={{ color: "#000" }}>๊ทผ๋ฆฐ๊ณต์</div>,
latlng: { lat: 33.451393, lng: 126.570738 },
},
]);
const EventMarkerContainer = ({ position, content }) => {
const map = useMap();
const [isVisible, setIsVisible] = useState(false);
return (
<MapMarker
position={position} // ๋ง์ปค๋ฅผ ํ์ํ ์์น
// @ts-ignore
onClick={(marker) => map.panTo(marker.getPosition())}
onMouseOver={() => setIsVisible(true)}
onMouseOut={() => setIsVisible(false)}
>
{isVisible && content}
</MapMarker>
);
};
const smhrdMarker = () => {
console.log("smhrdMarker");
setCenterLat(35.149896);
setCenterLon(126.9197772);
setData([
{
content: <div style={{ color: "#000" }}>๋ณธ์ </div>,
latlng: { lat: 35.149896, lng: 126.9197772 },
},
{
content: <div style={{ color: "#000" }}>๋จ๊ตฌ์ </div>,
latlng: { lat: 35.110479, lng: 126.877456 },
},
]);
setLevel(8);
};
return (
<div>
<Map // ์ง๋๋ฅผ ํ์ํ Container
center={{
// ์ง๋์ ์ค์ฌ์ขํ
lat: centerLat,
lng: centerLon,
}}
style={{
// ์ง๋์ ํฌ๊ธฐ
width: "100%",
height: "450px",
}}
level={level} // ์ง๋์ ํ๋ ๋ ๋ฒจ
>
{data.map((value) => (
<EventMarkerContainer
key={`EventMarkerContainer-${value.latlng.lat}-${value.latlng.lng}`}
position={value.latlng}
content={value.content}
/>
))}
</Map>
<button onClick={smhrdMarker}>์ค๋งํธ์ธ์ฌ๊ฐ๋ฐ์</button>
</div>
);
};
export default App2;
React ํ๋ก์ ํธ git-hub ์ฌ์ฉ์ ์ฃผ์์ฌํญ
npm install ํ์ start ํด์ค์ผ ํจ!
(๋น์ถ) npm install --force
(๋น์ถ) npm update
๋ฐ์ํ