UNPKG

@orca-fe/x-map

Version:
96 lines (95 loc) 3.45 kB
import { MjolnirEvent } from 'mjolnir.js'; import ResizeObserver from 'resize-observer-polyfill'; import { MapProjection, MapViewport, Point, Size, Viewport } from '../defs'; import MapControllerEvent from './MapControllerEvent'; export declare type Bounds = [Point, Point]; export interface MapControllerOptions { viewport?: Viewport; /** 是否支持旋转 */ canRotate?: boolean; /** 是否支持俯仰 */ canPitch?: boolean; /** 预设投影模式 */ projection?: MapProjection; maxZoom?: number; minZoom?: number; maxPitch?: number; disableZoom?: boolean; disableMove?: boolean; disableRotate?: boolean; rotateDelay?: number; zoomDelay?: number; limit?: Bounds; motion?: boolean | number; } export default class MapController extends MapControllerEvent { protected viewport: Viewport; protected realViewport: Viewport; canPitch: boolean; canRotate: boolean; projection: MapProjection; maxZoom: number; minZoom: number; maxPitch: number; disableZoom: boolean; disableMove: boolean; disableRotate: boolean; motion: boolean | number; rotateDelay: number; zoomDelay: number; limit: Bounds; ro: ResizeObserver; protected timer: number; protected readonly dom: HTMLElement; domSize: Size; constructor(dom: HTMLElement, options?: MapControllerOptions); computeSize(): void; destroy(): void; setViewport(viewport: Viewport): void; getViewport(real?: boolean): MapViewport; getViewportWithProjection(): import("@math.gl/web-mercator").default; getRealViewportWithProjection(): import("@math.gl/web-mercator").default; getLimitViewport(viewport: MapViewport, limitBounds?: Bounds): MapViewport; /** 标记是否右键点击可用,若不可用则需要用到contextmenu事件 */ protected canRightButtonDown: boolean; protected rightButtonDown: boolean; protected startPos: Point | null; protected startRotation: number | null; protected startPitch: number | null; /** 记录触摸按下的数量 */ protected pointerdown: number; handlePointerDown(e: MjolnirEvent): void; handleContextmenu(e: MjolnirEvent): void; protected moving: boolean; protected lastPos: { x: number; y: number; }; handlePointerMoveOrigin: (e: MouseEvent) => void; handlePointerMove(e: MjolnirEvent): void; handlePointerUp(): void; wheelDelta: number; zoomStart: number | null; wheelTimer: number; handleWheel(e: MjolnirEvent): void; pinchstartCoor: [number, number] | null; pinchOrRotate: 'pinch' | 'rotate' | null; handlePinchStart(e: MjolnirEvent): void; handlePinchMove(e: MjolnirEvent): void; handlePinchEnd(): void; handleRotateStart(e: MjolnirEvent): void; handleRotateMove(e: MjolnirEvent): void; handleRotateEnd(): void; triggerViewportChangePause: import("../utils/private").DebounceResult<(viewport: MapViewport) => void>; protected mousePoint: { x: number; y: number; } | undefined; triggerViewportChange(changedViewport?: {}, mousePoint?: { x: number; y: number; }): void; animTriggerTimer: number; animViewport(time: number): void; controllable(e: MjolnirEvent, type: 'move' | 'zoom' | 'rotate'): boolean; }