@orca-fe/x-map
Version:
96 lines (95 loc) • 3.45 kB
TypeScript
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;
}