import { Camera, Cartesian2, Cartesian3, Cartographic, ImageryLayer, ImageryProvider, Rectangle, TerrainProvider } from '@cesium/engine'; import { default as Effect } from '../effect/Effect.js'; import { LayerManageEvent, ViewerEvent } from '../event/index.js'; import { Layer, LayerGroup } from '../layer/index.js'; import { DrawTool, EditTool } from '../tools/index.ts'; import { default as XWeather } from '../weather/Weather.ts'; import { Compass, ContextMenu, DistanceLegend, HawkeyeMap, LoadingMask, LocationBar, MapSplit, MapSwitch, Popup, SceneSplit, TilesetSplit, Tooltip } from '../widget/index.js'; import { EnumBasicLayerID } from './BasicLayerList.ts'; import { EnumCameraFocus } from './CameraFocusHelper.ts'; import { default as ImageryLayerManager } from './ImageryLayerManager.ts'; import { default as Position } from './Position.ts'; import * as Cesium from "@cesium/engine"; type ImageryLayerFilterFunction = (x: number, y: number, level: number, request: any) => boolean; /** * 扩展的Viewer */ declare class XViewer extends Cesium.CesiumWidget { private _TDTKeys; private _viewerEvent; private _sceneEvent; private _mouseEvent; private _layerManageEvent; ImageryLayerMapList: Map; CurrentBasicID: string; private _BasicIDList; private _imgLayerManager; private _layerGroupCache; private _layerCache; private _viewerOption; private _cameraOption; private _layerContainer; private _widgetContainer; private _drawTool; private _editTool; private _effect; private _cesiumCache; private _currentLevel; constructor(container: Element | string, options?: {}); private _popup; get popup(): Popup; private _contextMenu; get contextMenu(): ContextMenu; private _tooltip; get tooltip(): Tooltip; private _mapSwitch; get mapSwitch(): MapSwitch; private _mapSplit; get mapSplit(): MapSplit; private _hawkeyeMap; get hawkeyeMap(): HawkeyeMap; private _loadingMask; get loadingMask(): LoadingMask; private _tilesetSplit; get tilesetSplit(): TilesetSplit; private _sceneSplit; get sceneSplit(): SceneSplit; private _locationBar; get locationBar(): LocationBar; private _distanceLegend; get distanceLegend(): DistanceLegend; private _compass; get compass(): Compass; /** * 获取所有的图层组 */ get LayerGroups(): Map; /** * 底图ID列表 */ get BasicIDList(): string[]; get effect(): Effect; /** * 绘制工具 */ get drawTool(): DrawTool; /** * 编辑工具 */ get editTool(): EditTool; /** * 图层容器DIV */ get layerContainer(): HTMLElement; /** * 组件容器DIV */ get widgetContainer(): HTMLElement; /** * 一个天地图Key值(随机的一个) */ get TDTKey(): string; set TDTKeys(value: Array); /** * 栅格图层管理 */ get ImageryLayerHelper(): ImageryLayerManager; /** * 相机位置 */ get cameraPosition(): Position; /** * 分辨率 */ get resolution(): number; /** * 视野范围 */ get viewBounds(): Rectangle; /** * 根据视野高度,计算当前级别(旧) */ getZoomLevel(): number; /** * 获取当前级别(新) */ get zoom(): number; /** * 根据请求瓦片,计算级别 */ getZoomByTiles(): number; /** * 获取当前requestRenderMode, * true,要求场景主动刷新 * false,场景自动刷新 */ get requestRenderMode(): boolean; /** * 获取当前requestRenderMode, * true,要求场景主动刷新 * false,场景自动刷新 */ set requestRenderMode(val: boolean); /** * 初始视野范围为中国 */ ViewToChina(): XViewer; /** * 切换相机视角 * @param cameraFocusType */ changeCameraFocus(cameraFocusType?: EnumCameraFocus): void; /** * 切换场景模式,2:2D,2.5:2.5D,3:3D * @param sceneMode * @param duration * @returns {Viewer} */ changeSceneMode(sceneMode: number, duration?: number): XViewer; /** * 根据高度获取地图级别 * @param cameraHeight 相机高度,默认为当前相机的高度 * @returns */ GetZoomByHeight(cameraHeight?: number): number; /** * 根据级别,获取相机高度 * @param zoom 级别 * @returns */ GetHeightByZoom(zoom: number): number; /** * 飞向实体 * @param target * @param duration * @returns */ flyToTarget(target: any, duration?: number): this; /** * 相机飞到某个位置(无视角信息时,则保持当前相机视角) * @param position * @param completeCallback * @param duration * @returns {Viewer} */ flyToPosition(position0: string | Array | Position | { lng: any; lat: any; } | Cartesian3 | Cartographic, completeCallback?: Camera.FlightCompleteCallback, duration?: number): XViewer; /** * 相机缩放到某个位置 * @param position * @param completeCallback * @returns {Viewer} */ zoomToPosition(position: string | Array | Position | { lng: any; lat: any; } | Cartesian3 | Cartographic, completeCallback?: Camera.FlightCompleteCallback): XViewer; /** * 飞行岛某一范围 * @param bounds * @param param1 * @param completeCallback * @param duration * @returns */ flyToBounds(bounds: string | number[], hpr?: { heading?: number; pitch?: number; roll?: number; }, completeCallback?: Camera.FlightCompleteCallback, duration?: number): XViewer; /** * 缩放到某一范围 * @param bounds * @param hpr * @param completeCallback * @returns */ zoomToBounds(bounds: string | number[], hpr?: { heading?: number; pitch?: number; roll?: number; }, completeCallback?: Camera.FlightCompleteCallback): XViewer; /** * 导出场景为图片 * @param name * @returns {Viewer} */ exportScene(name: string): XViewer; /** * Sets viewer options * @param options * @returns {Viewer} */ setOptions(options: any): this; /** * Sets camera pitch range * @param min * @param max * @returns {Viewer} */ setPitchRange(min?: number, max?: number): this; /** * Changes Mouse Mode,0:Default,1: Change the tiltEventTypes to CameraEventType.RIGHT_DRAG * @param mouseMode * @returns {Viewer} */ changeMouseMode(mouseMode: any): this; /** * 切换三维地形 * @param terrain 可空,默认为Promise.resolve(new EllipsoidTerrainProvider()) * @returns */ setTerrain(terrain?: Promise): XViewer; /** * 切换底图 * @param basicID 底图标识 * @returns */ setBasicLayer(basicID?: string | EnumBasicLayerID, layerOptions?: ImageryLayer.ConstructorOptions, providerOptions?: any): void; /** * 增量添加多个底图 * @param basicID * @param layerOptions * @param providerOptions * @returns */ appendBasicLayer(basicID?: string | EnumBasicLayerID, layerOptions?: ImageryLayer.ConstructorOptions, providerOptions?: any): void; /** * 添加地图 . * @param baseLayerProvider * @param layerOptions * @returns {Viewer} */ addBaseLayer(baseLayerProvider: Promise, layerOptions?: ImageryLayer.ConstructorOptions): this; /** * 获取所有底图,对应的图层对象 */ getBasicLayers(): Map; /** * 移除底图 */ clearBasicLayer(): void; /** * 获取 底图的可见性 */ get isBasicVisible(): boolean; /** * 改变底图的可见性 */ set isBasicVisible(isShow: boolean); /** * 添加影像图层 * @param providerPromise 影像图层Provider * @param layerID 制定图层ID * @param options 图层参数配置 * @param index 索引ID * @returns */ addImageryLayer(providerPromise: Promise, layerID?: string, layerOptions?: ImageryLayer.ConstructorOptions, index?: number): string; /** * 根据ID,获取某个影像图层对象 * @param layerID * @returns 影像图层对象 */ getImageryLayer(layerID: string): ImageryLayer; /** * 移除影像图层 * @param layerID */ removeImageryLayer(layerID: string): void; /** * 移除所有影像图层 */ clearImageryLayer(): void; /** * 改变 影像图层的索引顺序 * @param layerID 图层ID * @param index 索引ID */ changeImageryLayerIndex(layerID: string, index: number): void; /*** * 添加图层组 * @param layerGroup * @private */ addLayerGroup(layerGroup: LayerGroup): boolean; /** * 获取图层组 * @param layerGroupID 图层组ID * @returns */ getLayerGroup(layerGroupID: string): LayerGroup; /** * 移除图层组 * @param layerGroup * @private */ removeLayerGroup(layerGroup: LayerGroup): boolean; /** * 移除图层组 * @param layerGroupID * @returns */ removeLayerGroupByID(layerGroupID: string): boolean; /** * 添加图层 * @param layer * @private */ addLayer(layer: Layer, triggerLayerAdd?: boolean): boolean; /** * 获取图层对象 * @param layerID 图层ID * @returns */ getLayer(layerID: string): Layer; /** * 获取所有图层 */ getLayers(): any[]; /** * 判断是否含有某个图层 * @param layer * @returns */ hasLayer(layer: Layer): Layer | undefined; /** * 移除图层 * @param layer * @private */ removeLayer(layer: Layer, triggerLayerRemove?: boolean): boolean; /** * 根据图层ID,移除图层 * @param layerID 图层ID */ removeLayerByID(layerID: string): void; clearLayers(): void; /** * 图层对象操作管理事件对象 */ get LayerManageEvent(): LayerManageEvent; /** * 当图层添加后,通知出去 * @param addLayerCallback 图层对象的处理函数 */ onLayerAddManageHandler(addLayerCallback: Function): void; /** * 当图层移除后,通知出去 * @param addLayerCallback 图层对象的处理函数 */ onLayerRemoveManageHandler(removeLayerCallback: Function): void; private _weather; private _windLayer; /** * 天气对象 */ get Weather(): XWeather; /** * 添加风图层 * @param windJsonURL */ addWindLayer(windJsonURL: string, windOptions?: any): void; /** * 移除风图层 */ removeWindLayer(): void; /** * 对外绑定事件对象 */ get viewerEvent(): ViewerEvent; /** * * @param type * @param callback * @param context * @returns {Viewer} */ on(type: any, callback: Function, context?: any): this; /** * * @param type * @param callback * @param context * @returns {Viewer} */ once(type: any, callback: Function, context?: any): this; /** * * @param type * @param callback * @param context * @returns {Viewer} */ off(type: any, callback: Function, context?: any): this; /** *主动触发消息——使用ViewerEvent对象触发 * @param type 类型为 ViewerEventType,或自定义字符串 * @param params 自定义参数值 * @returns {Viewer} */ fire(type: any, params?: any): void; /** * Destroy方法重载 */ destroy(): this; getOffset(): { x: number; y: number; }; /** * 拾取位置点 (笛卡尔,世界坐标系) * @param windowPosition 屏幕坐标点 */ getCatesian3ByPick(windowPosition: Cartesian2): Cartesian3; /** * 放大一级 */ zoomIn(): void; /** * 缩小一级 */ zoomOut(): void; /** * 启用本地缓存 * @param cacheDBName 缓存数据库名称 * @param includeCallBack 包含url的过滤函数 * @param excludeCallBack 排除url的过滤函数 */ enableOfflineCache(cacheDBName?: string, includeCallBack?: (url: string) => boolean, excludeCallBack?: (url: string) => boolean): void; /** * 取消本地缓存,不启用 */ disableOfflineCache(): void; /** * 清理本地Cesium缓存 */ clearOfflineCache(): void; /** * 增加图层请求过滤 * https://cesium.com/learn/cesiumjs/ref-doc/WebMapTileServiceImageryProvider.html?classFilter=WebMapTileServiceImageryProvider * 参考:requestImage(x, y, level, request) → Promise.|undefined方法 * https://cesium.com/learn/cesiumjs/ref-doc/Request.html * request.type */ setWMTSProviderFilter(imageryFilter: ImageryLayerFilterFunction): void; /** * 获取视野的中心点 * @returns */ getCameraFocus(): Cesium.Cartesian3; /** * 获取缩放后的视野中心点 * @param scalar * @returns */ getCameraPosition(scalar?: number): Cartesian3; } export default XViewer;