import Controller, { ControllerProps, InteractionState } from "./controller.js"; import ViewState from "./view-state.js"; import LinearInterpolator from "../transitions/linear-interpolator.js"; import type Viewport from "../viewports/viewport.js"; export type MapStateProps = { /** Mapbox viewport properties */ /** The width of the viewport */ width: number; /** The height of the viewport */ height: number; /** The latitude at the center of the viewport */ latitude: number; /** The longitude at the center of the viewport */ longitude: number; /** The tile zoom level of the map. */ zoom: number; /** The bearing of the viewport in degrees */ bearing?: number; /** The pitch of the viewport in degrees */ pitch?: number; /** * Specify the altitude of the viewport camera * Unit: map heights, default 1.5 * Non-public API, see https://github.com/mapbox/mapbox-gl-js/issues/1137 */ altitude?: number; /** Viewport position */ position?: [number, number, number]; /** Viewport constraints */ maxZoom?: number; minZoom?: number; maxPitch?: number; minPitch?: number; /** Normalize viewport props to fit map height into viewport. Default `true` */ normalize?: boolean; maxBounds?: ControllerProps['maxBounds']; }; export type MapStateInternal = { /** Interaction states, required to calculate change during transform */ startPanLngLat?: [number, number]; startZoomLngLat?: [number, number]; startRotatePos?: [number, number]; startRotateLngLat?: [number, number, number]; /** Bearing when current perspective rotate operation started */ startBearing?: number; /** Pitch when current perspective rotate operation started */ startPitch?: number; /** Zoom when current zoom operation started */ startZoom?: number; }; export declare class MapState extends ViewState { getAltitude?: (pos: [number, number]) => number | undefined; constructor(options: MapStateProps & MapStateInternal & { makeViewport: (props: Record) => Viewport; getAltitude?: (pos: [number, number]) => number | undefined; }); /** * Start panning * @param {[Number, Number]} pos - position on screen where the pointer grabs */ panStart({ pos }: { pos: [number, number]; }): MapState; /** * Pan * @param {[Number, Number]} pos - position on screen where the pointer is * @param {[Number, Number], optional} startPos - where the pointer grabbed at * the start of the operation. Must be supplied of `panStart()` was not called */ pan({ pos, startPos }: { pos: [number, number]; startPos?: [number, number]; }): MapState; /** * End panning * Must call if `panStart()` was called */ panEnd(): MapState; /** * Start rotating * @param {[Number, Number]} pos - position on screen where the center is */ rotateStart({ pos }: { pos: [number, number]; }): MapState; /** * Rotate * @param {[Number, Number]} pos - position on screen where the center is */ rotate({ pos, deltaAngleX, deltaAngleY }: { pos?: [number, number]; deltaAngleX?: number; deltaAngleY?: number; }): MapState; /** * End rotating * Must call if `rotateStart()` was called */ rotateEnd(): MapState; /** * Start zooming * @param {[Number, Number]} pos - position on screen where the center is */ zoomStart({ pos }: { pos: [number, number]; }): MapState; /** * Zoom * @param {[Number, Number]} pos - position on screen where the current center is * @param {[Number, Number]} startPos - the center position at * the start of the operation. Must be supplied of `zoomStart()` was not called * @param {Number} scale - a number between [0, 1] specifying the accumulated * relative scale. */ zoom({ pos, startPos, scale }: { pos: [number, number]; startPos?: [number, number]; scale: number; }): MapState; /** * End zooming * Must call if `zoomStart()` was called */ zoomEnd(): MapState; zoomIn(speed?: number): MapState; zoomOut(speed?: number): MapState; moveLeft(speed?: number): MapState; moveRight(speed?: number): MapState; moveUp(speed?: number): MapState; moveDown(speed?: number): MapState; rotateLeft(speed?: number): MapState; rotateRight(speed?: number): MapState; rotateUp(speed?: number): MapState; rotateDown(speed?: number): MapState; shortestPathFrom(viewState: MapState): MapStateProps; applyConstraints(props: Required): Required; _constrainZoom(zoom: number, props?: Required): number; _zoomFromCenter(scale: any): MapState; _panFromCenter(offset: any): MapState; _getUpdatedState(newProps: any): MapState; _unproject(pos?: [number, number]): [number, number] | undefined; _unproject3D(pos: [number, number], altitude: number): [number, number, number]; _getNewRotation(pos: [number, number], startPos: [number, number], startPitch: number, startBearing: number): { pitch: number; bearing: number; }; } export default class MapController extends Controller { ControllerState: typeof MapState; transition: { transitionDuration: number; transitionInterpolator: LinearInterpolator; }; dragMode: 'pan' | 'rotate'; /** * Rotation pivot behavior: * - 'center': Rotate around viewport center (default) * - '2d': Rotate around pointer position at ground level (z=0) * - '3d': Rotate around 3D picked point (requires pickPosition callback) */ protected rotationPivot: 'center' | '2d' | '3d'; setProps(props: ControllerProps & MapStateProps & { rotationPivot?: 'center' | '2d' | '3d'; getAltitude?: (pos: [number, number]) => number | undefined; }): void; protected updateViewport(newControllerState: MapState, extraProps?: Record | null, interactionState?: InteractionState): void; /** Add altitude to rotateStart params based on rotationPivot mode */ protected _getAltitude: (pos: [number, number]) => number | undefined; } //# sourceMappingURL=map-controller.d.ts.map