์ค๋ React ํ๋ก์ ํธ์์ ์นด์นด์ค๋งต API๋ฅผ ์ฌ์ฉํด ์ง๋ ๊ธฐ๋ฅ์ ๊ตฌํํด์ผ ํ๋ค. ํนํ ์ขํ์ ์ฃผ์๋ฅผ ์๋ก ๋ณํํ๋ ์ง์ค์ฝ๋ฉ ๊ธฐ๋ฅ์ด ํ์ํ๋๋ฐ, ์ฒ์ ์จ๋ณด๋ ๊ฑฐ๋ผ ์ด๊ฒ์ ๊ฒ ์ฝ์ง์ ๋ง์ด ํ๋ค.
React-Kakao-Maps-SDK ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฌ์ฉํ๋ค. ์ด ๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ Map, MapMarker ๊ฐ์ React ์ปดํฌ๋ํธ๋ฅผ ์ ๊ณตํด์ ์ง๋๋ฅผ ์ฝ๊ฒ ๊ตฌํํ ์ ์์๋ค.
์ง๋๋ฅผ ํด๋ฆญํ๋ฉด ๊ทธ ์์น์ ๋ง์ปค๋ฅผ ํ์ํ๊ณ , ํด๋น ์์น์ ์ขํ๋ฅผ ์ํ๋ก ์ ์ฅํ๋ ๊ธฐ๋ณธ ๊ธฐ๋ฅ๋ถํฐ ๋ง๋ค์๋ค.
์ด ๋ถ๋ถ์ด ์ข ํท๊ฐ๋ ธ๋ค. React-Kakao-Maps-SDK๋ ์ง๋ ์ปดํฌ๋ํธ๋ง ์ ๊ณตํ๊ณ , ์ง์ค์ฝ๋ฉ ๊ฐ์ ์๋น์ค๋ ์๋ ์นด์นด์ค๋งต API๋ฅผ ๊ทธ๋๋ก ์จ์ผ ํ๋ค.
useRef๋ฅผ ์ฌ์ฉํด์ ์ง์ค์ฝ๋ ๊ฐ์ฒด๋ฅผ ๊ด๋ฆฌํ๋ค. ์ปดํฌ๋ํธ๊ฐ ๋ฆฌ๋ ๋๋ง๋ผ๋ ๊ฐ์ฒด๊ฐ ์ ์ง๋๋ ์ฅ์ ์ด ์์๋ค.
// ์ด๋ฐ ์์ผ๋ก ์ฌ์ฉํ์ (๊ฐ๋ตํ)
const geocoder = useRef(null);
useEffect(() => {
geocoder.current = new window.kakao.maps.services.Geocoder();
}, []);
// ์ขํ๋ก ์ฃผ์ ๊ฐ์ ธ์ค๊ธฐ
const getAddress = (lat, lng) => {
geocoder.current.coord2Address(lng, lat, (result, status) => {
if (status === window.kakao.maps.services.Status.OK) {
// ์ฌ๊ธฐ์ ์ฃผ์ ์ ๋ณด ์ฒ๋ฆฌ
}
});
};
๊ฒ์์ฐฝ์ ์ฃผ์๋ฅผ ์ ๋ ฅํ๋ฉด ์ง๋์์ ํด๋น ์์น๋ฅผ ์ฐพ์์ฃผ๋ ๊ธฐ๋ฅ๋ ๊ตฌํํ๋ค. ์ญ์ง์ค์ฝ๋ฉ๊ณผ ๋น์ทํ๊ฒ ์นด์นด์ค API๋ฅผ ์ฌ์ฉํ๋ค.
์นด์นด์ค๋งต API ๊ตฌ์กฐ
useRef์ ํ์ฉ
๋น๋๊ธฐ ์ฝ๋ฐฑ ์ฒ๋ฆฌ
๋จ๊ณ๋ณ๋ก ์ ๊ทผํ ๊ฒ ๋์์ด ๋ง์ด ๋๋ค. ํ ๋ฒ์ ๋ชจ๋ ๊ธฐ๋ฅ์ ๊ตฌํํ๋ ค๊ณ ํ๋ค๋ฉด ๋ ํท๊ฐ๋ ธ์ ๊ฒ ๊ฐ๋ค. ๊ธฐ๋ณธ ์ง๋ ํ์ โ ๋ง์ปค ์ถ๊ฐ โ ์ง์ค์ฝ๋ฉ ์ถ๊ฐ ์์ผ๋ก ์งํํ๋๋ ๋๋ฒ๊น ๋ ์ฌ์ ๊ณ ์ดํด๋ ์ ๋๋ค.
useRef๋ฅผ ์จ์ ์ง์ค์ฝ๋ ๊ฐ์ฒด๋ฅผ ๊ด๋ฆฌํ ๊ฒ๋ ์ข์ ์ ํ์ด์๋ค. useState๋ก ๊ด๋ฆฌํ๋ค๋ฉด ๋ถํ์ํ ๋ฆฌ๋ ๋๋ง์ด ๋ฐ์ํ์ ๊ฒ์ด๋ค.
๋ค์์๋ ์ด ๊ธฐ๋ฅ์ ๋ฆฌํฉํ ๋ง ํ๋ฉฐ, ์ปค์คํ ํ ์ผ๋ก ๋ถ๋ฆฌํด๋ณด๋ฉด ์ฌ์ฌ์ฉ์ฑ์ด ๋ ๋์์ง ๊ฒ ๊ฐ๋ค.