import type { L7Container } from '../../inversify.config'; import type { IViewport } from '../camera/ICameraService'; export type Point = [number, number]; export type Bounds = [[number, number], [number, number]]; export interface ILngLat { lng: number; lat: number; } export interface IPoint { x: number; y: number; } export interface IMercator { x: number; y: number; z: number; } export interface IStatusOptions { showIndoorMap: boolean; resizeEnable: boolean; dragEnable: boolean; keyboardEnable: boolean; doubleClickZoom: boolean; zoomEnable: boolean; rotateEnable: boolean; } export type MapStyleName = 'normal' | 'light' | 'dark' | string; export type MapStyleConfig = { [key: MapStyleName]: string | any; }; export type MapStyle = MapStyleName | any; export interface IMapWrapper { setContainer(container: L7Container, id: string | HTMLDivElement): void; } interface ISimpleMapCoord { setSize(size: number): void; getSize(): [number, number]; project(lnglat: [number, number]): [number, number]; unproject(xy: [number, number]): [number, number]; } export interface IMapService { version?: string; simpleMapCoord: ISimpleMapCoord; map: RawMap; bgColor: string; setBgColor(color: string): void; init(): void; initMiniMap?(): void; destroy(): void; onCameraChanged(callback: (viewport: IViewport) => void): void; addMarkerContainer(): void; getMarkerContainer(): HTMLElement; getOverlayContainer(): HTMLElement | undefined; on(type: string, handler: (...args: any[]) => void): void; off(type: string, handler: (...args: any[]) => void): void; once(type: string, handler: (...args: any[]) => void): void; emit(type: string, ...args: any[]): void; getContainer(): HTMLElement | null; getSize(): [number, number]; getMinZoom(): number; getMaxZoom(): number; getType(): string; getZoom(): number; getCenter(option?: ICameraOptions): ILngLat; getPitch(): number; getRotation(): number; getBounds(): Bounds; getMapContainer(): HTMLElement | null; getMapCanvasContainer(): HTMLElement; getMapStyleConfig(): MapStyleConfig; getMapStyleValue(name: MapStyleName): string | any; getMapStyle(): MapStyleName | any; getCanvasOverlays(): HTMLElement | undefined | null; setMapStyle(style: MapStyleName | any): void; setRotation(rotation: number): void; zoomIn(option?: any, eventData?: any): void; zoomOut(option?: any, eventData?: any): void; panTo(p: Point): void; panBy(x: number, y: number): void; fitBounds(bound: Bounds, fitBoundsOptions?: unknown): void; setZoomAndCenter(zoom: number, center: Point): void; setCenter(center: [number, number], option?: ICameraOptions): void; setPitch(pitch: number): void; setZoom(zoom: number): void; setMapStatus(option: Partial): void; updateView(viewOption: Partial): void; meterToCoord(center: number[], lnglat: number[]): number; pixelToLngLat(pixel: Point): ILngLat; lngLatToPixel(lnglat: Point): IPoint; containerToLngLat(pixel: Point): ILngLat; lngLatToContainer(lnglat: Point): IPoint; lngLatToMercator(lnglat: [number, number], altitude: number): IMercator; getModelMatrix(lnglat: [number, number], altitude: number, rotate: [number, number, number], scale: [number, number, number], origin: IMercator): number[]; lngLatToCoord?(lnglat: [number, number]): [number, number]; lngLatToCoords?(lnglatArray: number[][][] | number[][]): number[][][] | number[][] | number[][][] | number[][]; exportMap(type: 'jpg' | 'png'): string; rotateY?(option: { force?: boolean; reg?: number; } | undefined): void; } export interface IEarthService { version?: string; map: RawMap; bgColor: string; setBgColor(color: string): void; init(): void; destroy(): void; onCameraChanged(callback: (viewport: IViewport) => void): void; addMarkerContainer(): void; getMarkerContainer(): HTMLElement; on(type: string, handler: (...args: any[]) => void): void; off(type: string, handler: (...args: any[]) => void): void; once(type: string, handler: (...args: any[]) => void): void; emit(type: string, ...args: any[]): void; getContainer(): HTMLElement | null; getSize(): [number, number]; getMinZoom(): number; getMaxZoom(): number; getType(): string; getZoom(): number; getCenter(option?: ICameraOptions): ILngLat; getPitch(): number; getRotation(): number; getBounds(): Bounds; getMapContainer(): HTMLElement | null; getMapCanvasContainer(): HTMLElement; getMapStyleConfig(): MapStyleConfig; setRotation(rotation: number): void; zoomIn(option?: any, eventData?: any): void; zoomOut(option?: any, eventData?: any): void; panTo(p: Point): void; panBy(x: number, y: number): void; fitBounds(bound: Bounds, fitBoundsOptions?: unknown): void; setZoomAndCenter(zoom: number, center: Point): void; setCenter(center: [number, number], option?: ICameraOptions): void; setPitch(pitch: number): void; setZoom(zoom: number): void; setMapStyle(style: any): void; setMapStatus(option: Partial): void; meterToCoord(center: number[], lnglat: number[]): number; pixelToLngLat(pixel: Point): ILngLat; lngLatToPixel(lnglat: Point): IPoint; containerToLngLat(pixel: Point): ILngLat; lngLatToContainer(lnglat: Point): IPoint; lngLatToMercator(lnglat: [number, number], altitude: number): IMercator; getModelMatrix(lnglat: [number, number], altitude: number, rotate: [number, number, number], scale: [number, number, number], origin: IMercator): number[]; lngLatToCoord?(lnglat: [number, number]): [number, number]; lngLatToCoords?(lnglatArray: number[][][] | number[][]): number[][][] | number[][] | number[][][] | number[][]; getCustomCoordCenter?(): [number, number]; exportMap(type: 'jpg' | 'png'): string; rotateY?(option: { force?: boolean; reg?: number; } | undefined): void; } export declare const MapServiceEvent: string[]; /** * 地图初始化配置项 */ export interface IMapConfig { /** * 地图实例 */ mapInstance?: RawMap; /** * 高德地图API插件 */ plugin?: string[]; /** * 容器 DOM id */ id: string | HTMLDivElement; /** * 地图 */ token?: string; /** * 中心点 */ center?: [number, number]; /** * 地图倾角 */ pitch?: number; /** * 地图旋转角度 */ rotation?: number; /** * 缩放等级 */ zoom?: number; /** * 底图样式 */ style?: MapStyle; /** * 最小缩放等级 */ minZoom?: number; /** * 最大缩放等级 */ maxZoom?: number; attributionControl?: boolean; offsetCoordinate?: boolean; offsetZoom?: number; interactive: boolean; [key: string]: any; } /** * 地图相机参数 * @see */ export interface IMapCamera { aspect: number; fov: number; near: number; far: number; viewportWidth: number; viewportHeight: number; pitch: number; bearing: number; zoom: number; center: [number, number]; cameraHeight: number; cameraPosition?: [number, number, number]; up?: [number, number, number]; lookAt?: [number, number, number]; } export interface ICameraOptions { padding: number | [number, number, number, number] | { top?: number; bottom?: number; right?: number; left?: number; }; } export {};