728x90
반응형
목차
카카오 api를 통해 리액트로 맵을 구현해 보았다.
usegeolocation을 이용해 내 위치를 띄우는 코드
import useGeolocation from 'utils/useGeolocation';
import { Map, MapMarker } from 'react-kakao-maps-sdk';
const { kakao } = window;
export default function KaKaoMap() {
const location = useGeolocation(); //불러온 내 위치
return (
<Map
center={{
lat: location.coordinates.latitude,
lng: location.coordinates.longitude,
}} // 지도의 중심 좌표
style={{ width: '800px', height: '600px' }} // 지도 크기
level={3} // 지도 확대 레벨
>
);
}
useGeolocation 페이지
import { useState, useEffect } from 'react';
interface locationType {
loaded: boolean;
coordinates: { latitude: number; longitude: number }; //무조건 정보를 받아옴
error?: { code: number; message: string }; //error는 발생할 수도있으므로 ?
}
function useGeolocation() {
const [location, setLocation] = useState<locationType>({
loaded: false,
coordinates: { latitude: 0, longitude: 0 },
});
// 성공에 대한 로직
const onSuccess = (location: {
coords: { latitude: number; longitude: number };
}) => {
setLocation({
loaded: true,
coordinates: {
latitude: location.coords.latitude,
longitude: location.coords.longitude,
},
});
};
// 에러에 대한 로직
const onError = (error: { code: number; message: string }) => {
setLocation({
loaded: true,
coordinates: {
latitude: error.code,
longitude: error.code,
},
error,
});
};
useEffect(() => {
// navigator 객체 안에 geolocation이 없다면
// 위치 정보가 없는 것.
if (!('geolocation' in navigator)) {
onError({
code: 0,
message: 'Geolocation not supported',
});
}
navigator.geolocation.getCurrentPosition(onSuccess, onError);
console.log(location);
}, []);
return location;
}
export default useGeolocation;
완성된 지도 모습
참고
https://react-kakao-maps-sdk.jaeseokim.dev/docs/sample/overlay/categoryMarker
반응형
'프로젝트' 카테고리의 다른 글
[재활용 프로젝트][리액트] 카카오맵 api 내 위치 기능 구현 (0) | 2024.04.11 |
---|---|
[재활용 프로젝트][리액트] 카카오 api 맵 코드 리뷰하면서 배운 점 정리 (0) | 2024.04.05 |
[재활용 프로젝트][리액트] 카카오 api map scss모듈 적용 (0) | 2024.04.04 |
[프로젝트] git 협업 시에 pull request및 코드 리뷰 방법 (0) | 2024.03.24 |
[프로젝트] 유튜브 클론 프로젝트 (0) | 2024.03.21 |