diff --git a/docs/RELEASE-NOTES.md b/docs/RELEASE-NOTES.md index a55b0c3..2c1e1b3 100644 --- a/docs/RELEASE-NOTES.md +++ b/docs/RELEASE-NOTES.md @@ -5,6 +5,7 @@ ## [Unreleased] ### 수정 +- 지도: S57 ENC 오버레이 스타일 로드 완료 대기 후 레이어 추가 - 지도: S57EncOverlay API URL을 공유 API_BASE_URL로 통합 - 지도: S57 ENC sprite URL에 상대경로일 때 origin 프리픽스 추가 - 지도: S57 ENC 오버레이 타일/sprite/glyphs URL을 절대경로로 변환 (운영환경 상대경로 대응) diff --git a/frontend/src/common/components/map/S57EncOverlay.tsx b/frontend/src/common/components/map/S57EncOverlay.tsx index 692f336..0ad2e72 100644 --- a/frontend/src/common/components/map/S57EncOverlay.tsx +++ b/frontend/src/common/components/map/S57EncOverlay.tsx @@ -137,14 +137,21 @@ export function S57EncOverlay({ visible }: S57EncOverlayProps) { if (!map) return; if (visible) { - addEncLayers(map); + const doAdd = () => addEncLayers(map); + + if (map.isStyleLoaded()) { + doAdd(); + } else { + map.once('style.load', doAdd); + } + + return () => { + map.off('style.load', doAdd); + removeEncLayers(map); + }; } else { removeEncLayers(map); } - - return () => { - if (map) removeEncLayers(map); - }; // eslint-disable-next-line react-hooks/exhaustive-deps }, [visible, mapRef]);