import { BaseController, BaseControllerInitArgs } from "./base"; import { IntersectMeshInterface } from "../types/intersectMeshInterface"; import { State } from "../types/state"; import { GestureEvent } from "../utils/event"; import { MovePanoOptions } from "../types/movePanoOptions"; interface PanoramaLikeControllerCustomInitArgs { /** 默认相机俯仰角 */ defaultLatitude?: number; /** 最大相机俯仰角 */ maxLatitude?: number | ((fov: number) => number); /** 最小相机俯仰角 */ minLatitude?: number | ((fov: number) => number); /** 默认相机可视角度(垂直),可作为 `zoom` */ defaultFov?: number; /** 最大默认相机可视角度(垂直) */ maxFov?: number; /** 最小默认相机可视角度(垂直) */ minFov?: number; /** * 点位间移动动画速度 单位 m/s * @description * 这边设置的是速度,整体耗时会通过距离除速度计算得到 */ moveSpeed?: number; /** 鼠标焦点环自定义创建器 */ intersectMeshCreator?: () => IntersectMeshInterface; /** 航拍点最小高度 */ aerialObserverMinHeight?: number; } declare const defaultPanoramaLikeControllerCustomInitArgs: Required; type PanoramaLikeControllerInitArgs = BaseControllerInitArgs & PanoramaLikeControllerCustomInitArgs; declare class PanoramaLikeController extends BaseController implements Required { maxLatitude: number | ((fov: number) => number); minLatitude: number | ((fov: number) => number); maxFov: number; minFov: number; defaultLatitude: number; defaultFov: number; moveSpeed: number; intersectMeshCreator: () => IntersectMeshInterface; aerialObserverMinHeight: number; protected intersectMesh: IntersectMeshInterface; protected pinchState?: { x: number; y: number; fov: number; }; static parseArgs(args: PanoramaLikeControllerInitArgs): Required; static initAnimationEndState(args: PanoramaLikeControllerInitArgs): State; constructor(args: PanoramaLikeControllerInitArgs); /** 动态更新配置 */ updateConfiguration(args: PanoramaLikeControllerCustomInitArgs): boolean; /** 析构函数 */ destroy(): void; /** 是否准备好,即不在用户操作中,并且不再动画中 */ isReady(): boolean; /** 计算动画时间 */ protected calculateMovingDuration(duration: MovePanoOptions["duration"], distance: number): number; /** 隐藏焦点环 */ protected hideIntersectMesh(): void; /** 计算 屏幕像素 offset 与 转动间的关系 */ protected coordinatesForOffset(offset: { x: number; y: number; }): { longitude: number; latitude: number; }; /** 相机拉风箱 */ protected cameraBounce(): void; /** 惯性转动镜头 */ protected requestMomentumMovement(event: GestureEvent, isFirst: boolean, velocity: { longitude: number; latitude: number; }, duration: number): void; /** 触摸 Pan 事件,相机转动 */ protected onPanGesture(event: GestureEvent): void; /** 触摸 Pinch 事件, 相机缩放 */ protected onPinchGesture(event: GestureEvent): void; /** 鼠标滚轮事件 相机缩放 */ protected onMouseWheel(event: GestureEvent): void; /** 鼠标移动事件 展示交点环 */ protected onMouseMove(event: GestureEvent): void; /** 触摸 双点屏幕 */ protected onDblTapGesture(event: GestureEvent): void; } export { PanoramaLikeController, PanoramaLikeControllerInitArgs, PanoramaLikeControllerCustomInitArgs, defaultPanoramaLikeControllerCustomInitArgs, };