🌏 카카오 맵 API - 선의 거리 계산하기
🌏 리액트 카카오 맵 API - 선의 거리 계산하기
const WalkPathPage = () => {
return (
<div>
<WalkPath />
</div>
);
};
const Router = () => {
return (
<BrowserRouter>
<Routes>
<Route path="/" element={<Home />} />
<Route path="/walkpath" element={<WalkPathPage />} />
</Routes>
</BrowserRouter>
);
};
// json 서버에 저장하는 로직
export const getRouteInfo = async () => {
const response = await axios.get(PATH_ROUTE_API_URL);
return response.data;
};
// 경로를 저장하기 위한 값들 (패스값, 총 거리, 도보, 자전거 시간)을 저장한다
const saveRouteInfo = async (paths, distances) => {
const totalDistance = distances[distances.length - 1];
const totalWalkkTime = (totalDistance / 67) | 0;
const totalBycicleTime = (totalDistance / 227) | 0;
const routeData = {
paths,
totalDistance,
totalWalkkTime,
totalBycicleTime
};
try {
await createRouteInfo(routeData);
alert('경로저장완료!');
console.log('경로저장완료', routeData);
} catch (error) {
console.error('경로저장에러', error);
}
};
const handleRightClick = (_map, _mouseEvent) => {
setIsdrawing(false);
// 클릭한 선이 있다면 값들을 저장
if (clickLine) {
saveRouteInfo(paths, distances);
}
};
마우스 우클릭 시, 선 그리기가 종료되고 오버레이가 뜨게 되는데 그 과정을 거치지 않고 ESC로 리셋하고 싶었다.
useEffect(() => {
// 선 그리기 리셋
const handleInfoReset = (e) => {
if (e.key === 'Escape') {
setIsdrawing(false);
setPaths([]);
setDistances([]);
console.log('esc누름');
}
};
window.addEventListener('keydown', handleInfoReset);
return () => {
window.removeEventListener('keydown', handleInfoReset);
};
}, []);

사실 이런식으로 버튼을 달아서 저장을 할 수 있게 하고 싶었는데, css 문제인지 버튼 클릭이 잘 되지 않는 상황이 발생했다. 1시간 정도 고민하다가 안 되는 것 같아서 일단 패스하고 우클릭으로 저장할 수 있게 짜놨는데 나중에 다시 버튼 클릭으로 저장할 수 있게 만들고 싶다!
clickLine과 moveLine값도 리셋 해줬다.

이런식으로 Polyline을 새로 생성해줬다.
=> 저 오류들은 사라지고 화면리셋도 정상적으로 잘 되는데 distances 값이 0으로 찍히는 경우가 발생. ㅎㅎ;;
clickLine과 moveLine 값을 리셋 안 해주면 됨. 😡
특강 듣기 전에 이 에러떠서 특강도 제대로 못 듣고 이거에만 매달렸는데..... 😂

오늘 13일의 금요일이었다. 😨