"use client";
import GoogleMapView from "@/components/GoogleMapView";
import NaverMapView from "@/components/NaverMapView";
import { isKoreaCoord, type MapBounds, type FlyTo, type MapViewProps } from "@/components/MapView.types";
export type { MapBounds, FlyTo };
const NAVER_KEY = process.env.NEXT_PUBLIC_NAVER_MAP_CLIENT_ID || "";
/**
* #363 — 메인 지도 dispatcher.
* - 키 미설정: GoogleMap (회귀 0)
* - flyTo 또는 selected 좌표가 KR bbox: NaverMap
* - 그 외 (해외 + 좌표 추정): GoogleMap
* - 초기 마운트 시 화면 중심을 추정할 수 없으면 식당 평균 좌표로.
*/
export default function MapView(props: MapViewProps) {
if (!NAVER_KEY) return ;
const targetLat = props.flyTo?.lat ?? props.selected?.latitude ?? avgLat(props.restaurants);
const targetLng = props.flyTo?.lng ?? props.selected?.longitude ?? avgLng(props.restaurants);
if (targetLat != null && targetLng != null && isKoreaCoord(targetLat, targetLng)) {
return ;
}
return ;
}
function avgLat(rs: MapViewProps["restaurants"]): number | null {
if (!rs.length) return null;
return rs.reduce((s, r) => s + r.latitude, 0) / rs.length;
}
function avgLng(rs: MapViewProps["restaurants"]): number | null {
if (!rs.length) return null;
return rs.reduce((s, r) => s + r.longitude, 0) / rs.length;
}