커스텀 오버레이

React 컴포넌트를 지도 위에 직접 렌더링하는 예제입니다.

코드 보기
import {
  NavermapsProvider,
  Container as MapDiv,
  NaverMap,
  CustomOverlay,
  useNavermaps,
} from 'react-naver-maps';

function CustomOverlayMapContent() {
  const navermaps = useNavermaps();

  return (
    <NaverMap
      defaultCenter={new navermaps.LatLng(37.5666805, 126.9784147)}
      defaultZoom={15}
    >
      <CustomOverlay position={{ lat: 37.5666805, lng: 126.9784147 }}>
        <div
          style={{
            background: '#fff',
            border: '2px solid #6366f1',
            borderRadius: '8px',
            padding: '8px 12px',
            fontSize: '14px',
            fontWeight: 'bold',
            color: '#1e293b',
            boxShadow: '0 2px 8px rgba(0,0,0,0.15)',
            transform: 'translate(-50%, -100%)',
          }}
        >
          커스텀 오버레이
        </div>
      </CustomOverlay>
    </NaverMap>
  );
}

function CustomOverlayMap() {
  return (
    <MapDiv style={{ width: '100%', height: '400px' }}>
      <CustomOverlayMapContent />
    </MapDiv>
  );
}

export default function CustomOverlayExample() {
  return (
    <NavermapsProvider ncpKeyId="aluya4ff04">
      <CustomOverlayMap />
    </NavermapsProvider>
  );
}

설명

CustomOverlayposition 좌표에 children을 렌더링합니다. React의 createPortal을 사용하므로 일반 React 컴포넌트를 그대로 활용할 수 있습니다.

스타일은 CSS로 자유롭게 지정하세요.