React + JavaScript를 사용해 카카오지도를 구현했다.
전체코드
import React, { useEffect, useState, useMemo } from "react";
import Marker from "../components/Marker";
const { kakao } = window;
export default function StudyMap() {
// 현재위치 담는 곳
const [location, setLocation] = useState("");
const [map, setMap] = useState();
// 현재위치 세부조정
var options = {
enableHighAccuracy: true,
timeout: 5000,
maximumAge: 0,
};
// 현재 위치 가져오기
useMemo(() => {
if (navigator.geolocation) {
navigator.geolocation.getCurrentPosition(success, error, options);
}
function success(position) {
setLocation({
latitude: position.coords.latitude,
longitude: position.coords.longitude,
});
}
function error() {
setLocation({
latitude: 33.450701,
longitude: 126.570667,
});
console.log("위치 받기 실패");
}
}, [navigator.geolocation.getCurrentPosition]);
// 카카오지도 API 가져오기
const kakaoMap = () => {
const container = document.getElementById("map");
const options = {
center: new kakao.maps.LatLng(location.latitude, location.longitude),
level: 3,
};
setMap(new kakao.maps.Map(container, options));
};
// 화면에 랜더링
useEffect(() => {
kakaoMap();
console.log(location);
}, [location]);
return (
<>
<div id="map" style={{ width: "100vw", height: "100vh" }}>
<Marker map={map} location={location} kakao={kakao} />
</div>
</>
);
}
'Framework(Library) > React' 카테고리의 다른 글
React와 Next.js의 차이와 Next.js 프로젝트 생성하기 (0) | 2024.01.22 |
---|---|
[React] 동기 / 비동기 통신 (0) | 2023.08.28 |
Next.js 리렌더링하면 Styled-Components 적용 안됨 (0) | 2023.04.13 |
[React] Edit Page 보완 - defaultValue와 myvariables (0) | 2023.03.18 |
[Error] cSpell Unknown word 무시하기 (0) | 2023.03.16 |