/// /// /// import React from "react"; import { CompatibleReactElement, PolymorphicComponentPropsWithOutRef } from "../types"; export declare const KakaoMapContext: React.Context; export type _MapProps = { /** * 중심으로 설정할 위치 입니다. */ center: { lat: number; lng: number; } | { x: number; y: number; }; /** * 중심을 이동시킬때 Panto를 사용할지 정합니다. * @default false */ isPanto?: boolean; /** * 중심 좌표를 지정한 좌표 또는 영역으로 부드럽게 이동한다. 필요하면 확대 또는 축소도 수행한다. * 만약 이동할 거리가 지도 화면의 크기보다 클 경우 애니메이션 없이 이동한다. * padding 만큼 제외하고 영역을 계산하며, padding 을 지정하지 않으면 기본값으로 32가 사용된다. */ padding?: number; /** * 확대 수준 (기본값: 3) */ level?: number; /** * 최대 확대 수준 */ maxLevel?: number; /** * 최소 확대 수준 */ minLevel?: number; /** * 지도 종류 (기본값: 일반 지도) */ mapTypeId?: kakao.maps.MapTypeId | keyof typeof kakao.maps.MapTypeId; /** * 마우스 드래그, 휠, 모바일 터치를 이용한 시점 변경(이동, 확대, 축소) 가능 여부 */ draggable?: boolean; /** * 마우스 휠이나 멀티터치로 지도 확대, 축소 기능을 막습니다. 상황에 따라 지도 확대, 축소 기능을 제어할 수 있습니다. */ zoomable?: boolean; /** * 마우스 휠, 모바일 터치를 이용한 확대 및 축소 가능 여부 */ scrollwheel?: boolean; /** * 더블클릭 이벤트 및 더블클릭 확대 가능 여부 */ disableDoubleClick?: boolean; /** * 더블클릭 확대 가능 여부 */ disableDoubleClickZoom?: boolean; /** * 투영법 지정 (기본값: kakao.maps.ProjectionId.WCONG) */ projectionId?: string; /** * 지도 타일 애니메이션 설정 여부 (기본값: true) */ tileAnimation?: boolean; /** * 키보드의 방향키와 +, – 키로 지도 이동,확대,축소 가능 여부 (기본값: false) */ keyboardShortcuts?: boolean; /** * map 생성 후 해당 객체를 전달하는 함수 */ onCreate?: (map: kakao.maps.Map) => void; /** * 중심 좌표가 변경되면 발생한다. */ onCenterChanged?: (target: kakao.maps.Map) => void; /** * 확대 수준이 변경되기 직전 발생한다. */ onZoomStart?: (target: kakao.maps.Map) => void; /** * 확대 수준이 변경되면 발생한다. */ onZoomChanged?: (target: kakao.maps.Map) => void; /** * 지도 영역이 변경되면 발생한다. */ onBoundsChanged?: (target: kakao.maps.Map) => void; /** * 지도를 클릭하면 발생한다. */ onClick?: (target: kakao.maps.Map, mouseEvent: kakao.maps.event.MouseEvent) => void; /** * 지도를 더블클릭하면 발생한다. */ onDoubleClick?: (target: kakao.maps.Map, mouseEvent: kakao.maps.event.MouseEvent) => void; /** * 지도를 마우스 오른쪽 버튼으로 클릭하면 발생한다. */ onRightClick?: (target: kakao.maps.Map, mouseEvent: kakao.maps.event.MouseEvent) => void; /** * 지도에서 마우스 커서를 이동하면 발생한다. */ onMouseMove?: (target: kakao.maps.Map, mouseEvent: kakao.maps.event.MouseEvent) => void; /** * 드래그를 시작할 때 발생한다. */ onDragStart?: (target: kakao.maps.Map, mouseEvent: kakao.maps.event.MouseEvent) => void; /** * 드래그를 하는 동안 발생한다. */ onDrag?: (target: kakao.maps.Map, mouseEvent: kakao.maps.event.MouseEvent) => void; /** * 드래그가 끝날 때 발생한다. */ onDragEnd?: (target: kakao.maps.Map, mouseEvent: kakao.maps.event.MouseEvent) => void; /** * 중심 좌표나 확대 수준이 변경되면 발생한다. * 단, 애니메이션 도중에는 발생하지 않는다. */ onIdle?: (target: kakao.maps.Map) => void; /** * 확대수준이 변경되거나 지도가 이동했을때 타일 이미지 로드가 모두 완료되면 발생한다. * 지도이동이 미세하기 일어나 타일 이미지 로드가 일어나지 않은경우 발생하지 않는다. */ onTileLoaded?: (target: kakao.maps.Map) => void; /** * 지도 기본 타일(일반지도, 스카이뷰, 하이브리드)이 변경되면 발생한다. */ onMaptypeidChanged?: (target: kakao.maps.Map) => void; children?: React.ReactNode | undefined; }; export type MapProps = PolymorphicComponentPropsWithOutRef & React.RefAttributes; export type MapComponent = (props: MapProps) => CompatibleReactElement; /** * 기본적인 Map 객체를 생성하는 Comeponent 입니다. * props로 받는 `on*` 이벤트는 해당 `kakao.maps.Map` 객체를 함께 인자로 전달 합니다. * * `ref`를 통해 `map` 객체에 직접 접근하여 사용 또는 onCreate 이벤트를 이용하여 접근이 가능합니다. * * > *주의 사항* `Map`, `RoadView` 컴포넌트에 한하여, ref 객체가 컴포넌트 마운트 시점에 바로 초기화가 안될 수 있습니다. * > * > 컴포넌트 마운트 시점에 `useEffect` 를 활용하여, 특정 로직을 수행하고 싶은 경우 `ref` 객체를 사용하는 것보다 * > `onCreate` 이벤트와 `useState`를 함께 활용하여 제어하는 것을 추천 드립니다. */ export declare const Map: MapComponent;