diff --git a/apps/nowait-user/src/pages/waiting/boothMap/hooks/useGeoPolygon.ts b/apps/nowait-user/src/pages/waiting/boothMap/hooks/useGeoPolygon.ts index 4e12a904..6074ed56 100644 --- a/apps/nowait-user/src/pages/waiting/boothMap/hooks/useGeoPolygon.ts +++ b/apps/nowait-user/src/pages/waiting/boothMap/hooks/useGeoPolygon.ts @@ -1,32 +1,36 @@ import axios from "axios"; import { useEffect, useState } from "react"; +let cachedPaths: { lat: number; lng: number }[][] | null = null; + export const useGeoPolygon = () => { const [paths, setPaths] = useState<{ lat: number; lng: number }[][]>([]); useEffect(() => { + if (cachedPaths) { + setPaths(cachedPaths); + return; + } + const fetchPolygons = async () => { try { const { data } = await axios.get("/geojson/university.geojson"); - // 좌표 변환 - const coords = data.features.map((feature: any) => { - return feature.geometry.coordinates[0].map( - ([lng, lat]: [number, number]) => ({ - lat, - lng, - }) - ); - }); - - if (coords.length > 0) { - setPaths(coords); // [외곽, 구멍] - } + const coords = data.features.map((feature: any) => + feature.geometry.coordinates[0].map( + ([lng, lat]: [number, number]) => ({ lat, lng }) + ) + ); + + cachedPaths = coords; + setPaths(coords); } catch (err) { console.error("GeoJSON에 오류가 발생 했습니다.:", err); } }; + fetchPolygons(); }, []); + return paths; -}; +}; \ No newline at end of file