UNPKG

@deck.gl/core

Version:

deck.gl core library

109 lines 4.54 kB
import Viewport from "./viewport.js"; import { Padding } from "./viewport.js"; export type WebMercatorViewportOptions = { /** Name of the viewport */ id?: string; /** Left offset from the canvas edge, in pixels */ x?: number; /** Top offset from the canvas edge, in pixels */ y?: number; /** Viewport width in pixels */ width?: number; /** Viewport height in pixels */ height?: number; /** Longitude in degrees */ longitude?: number; /** Latitude in degrees */ latitude?: number; /** Tilt of the camera in degrees */ pitch?: number; /** Heading of the camera in degrees */ bearing?: number; /** Camera altitude relative to the viewport height, legacy property used to control the FOV. Default `1.5` */ altitude?: number; /** Camera fovy in degrees. If provided, overrides `altitude` */ fovy?: number; /** Viewport center in world space. If geospatial, refers to meter offsets from lng, lat, elevation */ position?: number[]; /** Zoom level */ zoom?: number; /** Padding around the viewport, in pixels. */ padding?: Padding | null; /** Model matrix of viewport center */ modelMatrix?: number[] | null; /** Custom projection matrix */ projectionMatrix?: number[]; /** Use orthographic projection */ orthographic?: boolean; /** Scaler for the near plane, 1 unit equals to the height of the viewport. Default `0.1` */ nearZMultiplier?: number; /** Scaler for the far plane, 1 unit equals to the distance from the camera to the edge of the screen. Default `1.01` */ farZMultiplier?: number; /** Optionally override the near plane position. `nearZMultiplier` is ignored if `nearZ` is supplied. */ nearZ?: number; /** Optionally override the far plane position. `farZMultiplier` is ignored if `farZ` is supplied. */ farZ?: number; /** Render multiple copies of the world */ repeat?: boolean; /** Internal use */ worldOffset?: number; /** @deprecated Revert to approximated meter size calculation prior to v8.5 */ legacyMeterSizes?: boolean; }; /** * Manages transformations to/from WGS84 coordinates using the Web Mercator Projection. */ export default class WebMercatorViewport extends Viewport { static displayName: string; longitude: number; latitude: number; pitch: number; bearing: number; altitude: number; fovy: number; orthographic: boolean; /** Each sub viewport renders one copy of the world if repeat:true. The list is generated and cached on first request. */ private _subViewports; /** @deprecated Revert to approximated meter size calculation prior to v8.5 */ private _pseudoMeters; constructor(opts?: WebMercatorViewportOptions); get subViewports(): WebMercatorViewport[] | null; projectPosition(xyz: number[]): [number, number, number]; unprojectPosition(xyz: number[]): [number, number, number]; /** * Add a meter delta to a base lnglat coordinate, returning a new lnglat array * * Note: Uses simple linear approximation around the viewport center * Error increases with size of offset (roughly 1% per 100km) * * @param {[Number,Number]|[Number,Number,Number]) lngLatZ - base coordinate * @param {[Number,Number]|[Number,Number,Number]) xyz - array of meter deltas * @return {[Number,Number]|[Number,Number,Number]) array of [lng,lat,z] deltas */ addMetersToLngLat(lngLatZ: number[], xyz: number[]): number[]; panByPosition(coords: number[], pixel: number[]): WebMercatorViewportOptions; getBounds(options?: { z?: number; }): [number, number, number, number]; /** * Returns a new viewport that fit around the given rectangle. * Only supports non-perspective mode. */ fitBounds( /** [[lon, lat], [lon, lat]] */ bounds: [[number, number], [number, number]], options?: { /** If not supplied, will use the current width of the viewport (default `1`) */ width?: number; /** If not supplied, will use the current height of the viewport (default `1`) */ height?: number; /** In degrees, 0.01 would be about 1000 meters */ minExtent?: number; /** Max zoom level */ maxZoom?: number; /** Extra padding in pixels */ padding?: number | Required<Padding>; /** Center shift in pixels */ offset?: number[]; }): WebMercatorViewport; } //# sourceMappingURL=web-mercator-viewport.d.ts.map