# 설계서: 메인 지도 탭 SDK 국내/해외 분기 (#363) > **상태**: Approved > **작성**: [AI] Architect · **최종수정**: 2026-06-16 > **추적성** — Redmine: #363 · 부모: v0.1.51 1단계(외부 링크 분기) · 관련: MapView.tsx, mobile nearby > · 구현 파일: `frontend/src/components/MapView.tsx`(dispatcher), `frontend/src/components/GoogleMapView.tsx`(rename from 기존 MapView 내용), `frontend/src/components/NaverMapView.tsx`(신규), `frontend/src/lib/map-utils.ts`(공용 헬퍼) > · 테스트: 본 범위 밖 (수동 — dev 브라우저 검증) ## 1. 목적 (Why) 현재 MapView는 `@vis.gl/react-google-maps` 단일 사용. 한국 식당은 네이버 지도가 지번/도로명/상호/길찾기에서 압도적으로 정확. 메인 지도 탭 자체를 국내/해외 분기. ## 2. 범위 - 포함: MapView를 dispatcher로 전환, 좌표 기반 자동 분기(KR bbox), 네이버 키 미설정 시 GoogleMap fallback. - 제외 (별도 후속): 사용자 강제 토글 UI, mixed 화면(한국+해외 동시) 최적화, 모바일 nearby도 동일 분기는 1차 적용 후 검토. ## 3. 인수조건 - [ ] `NEXT_PUBLIC_NAVER_MAP_CLIENT_ID` 환경변수 설정 + 화면 중심이 KR bbox 안이면 NaverMap 렌더. - [ ] 키 미설정 또는 화면이 KR 밖이면 GoogleMap 렌더 (현행 동일). - [ ] Supercluster + 클러스터/단일 마커 표시, 클릭 → onSelectRestaurant 콜백 동일. - [ ] flyTo, onBoundsChanged, 내 위치, 채널 색상 동일하게 동작. - [ ] 빌드/타입 회귀 없음. ## 4. 컨텍스트 & 제약 - 네이버 지도 v3: `https://oapi.map.naver.com/openapi/v3/maps.js?ncpClientId=` 스크립트 로드. - 네이버 좌표계: 기본 WGS84 (`naver.maps.LatLng(lat, lng)`). - 직접 wrapper 채택 (react-naver-maps 의존성 제거 — 메인터넌스 리스크). - Supercluster는 SDK 독립이라 재사용. - KR bbox: 위도 33~38.7, 경도 124~132. 화면 중심좌표가 안에 있으면 한국. ## 5. 아키텍처 개요 ``` MapView (dispatcher) │ ├─ 화면 중심 좌표가 KR bbox AND 네이버 키 있음 → NaverMapView │ ├─