@soonspacejs/plugin-tiles 2.14.29 → 2.14.31
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/ArcgisTilesRenderer.d.ts +2 -2
- package/dist/TilesPlugin.d.ts +16 -0
- package/dist/index.d.ts +4 -16
- package/dist/index.esm.js +1430 -84
- package/dist/terrain-tiles-renderer/OverlayManager.d.ts +125 -0
- package/dist/terrain-tiles-renderer/ResourceManager.d.ts +78 -0
- package/dist/terrain-tiles-renderer/TerrainManager.d.ts +75 -0
- package/dist/terrain-tiles-renderer/TerrainTilesRenderer.d.ts +218 -0
- package/dist/terrain-tiles-renderer/index.d.ts +6 -0
- package/dist/terrain-tiles-renderer/plugins/TileCustomMaterialPlugin.d.ts +26 -0
- package/dist/terrain-tiles-renderer/plugins/index.d.ts +1 -0
- package/dist/terrain-tiles-renderer/types.d.ts +295 -0
- package/dist/tiles-renderer/TilesRenderer.d.ts +120 -0
- package/dist/tiles-renderer/TilesRendererManager.d.ts +51 -0
- package/docs/cesium-ion-terrain-white-spots.md +90 -0
- package/package.json +3 -3
|
@@ -0,0 +1,125 @@
|
|
|
1
|
+
import { ImageOverlayPlugin, GeoJSONOverlay, CesiumIonOverlay, TMSTilesOverlay, XYZTilesOverlay, WMSTilesOverlay, WMTSTilesOverlay, UrlTemplateTilesOverlay } from 'um-3d-tiles-renderer/plugins';
|
|
2
|
+
import { ResourceManager } from './ResourceManager';
|
|
3
|
+
import { IGeoJSONOverlayOptions, ICesiumIonOverlayOptions, ITMSTilesOverlayOptions, IXYZTilesOverlayOptions, IWMSTilesOverlayOptions, IWMTSTilesOverlayOptions, IUrlTemplateOverlayOptions } from './types';
|
|
4
|
+
/**
|
|
5
|
+
* OverlayManager - Overlay 实例管理器
|
|
6
|
+
*
|
|
7
|
+
* 职责:
|
|
8
|
+
* - 管理 Overlay 的运行时实例
|
|
9
|
+
* - 与 ResourceManager 配合:配置存储在 ResourceManager,实例由本类管理
|
|
10
|
+
* - 提供创建、删除、更新 Overlay 的方法
|
|
11
|
+
*/
|
|
12
|
+
export declare class OverlayManager {
|
|
13
|
+
private imageOverlayPlugin;
|
|
14
|
+
private resourceManager?;
|
|
15
|
+
/** 存储所有 overlay 实例 */
|
|
16
|
+
private _instances;
|
|
17
|
+
constructor(imageOverlayPlugin: ImageOverlayPlugin | undefined, resourceManager?: ResourceManager | undefined);
|
|
18
|
+
addGeoJSON(options: IGeoJSONOverlayOptions): GeoJSONOverlay | null;
|
|
19
|
+
updateGeoJSONColor(id: string, color: string): boolean;
|
|
20
|
+
updateGeoJSONStrokeStyle(id: string, strokeStyle: string): boolean;
|
|
21
|
+
updateGeoJSONStrokeWidth(id: string, strokeWidth: number): boolean;
|
|
22
|
+
updateGeoJSONFillStyle(id: string, fillStyle: string): boolean;
|
|
23
|
+
updateGeoJSONMode(id: string, mode: 'overlay' | 'mask' | 'invertMask'): boolean;
|
|
24
|
+
addCesiumIon(options: ICesiumIonOverlayOptions): CesiumIonOverlay | null;
|
|
25
|
+
addTMS(options: ITMSTilesOverlayOptions): TMSTilesOverlay | null;
|
|
26
|
+
addXYZ(options: IXYZTilesOverlayOptions): XYZTilesOverlay | null;
|
|
27
|
+
/**
|
|
28
|
+
* 添加 URL 模板 Overlay
|
|
29
|
+
*
|
|
30
|
+
* 这是一个通用的瓦片加载方式,支持多种 URL 模板变量:
|
|
31
|
+
* - `{z}`, `{x}`, `{y}` - 标准 XYZ 坐标
|
|
32
|
+
* - `{s}` - 子域名轮换
|
|
33
|
+
* - `{reverseY}` - TMS 风格的 Y 坐标
|
|
34
|
+
* - 地理边界框变量等
|
|
35
|
+
*
|
|
36
|
+
* @example
|
|
37
|
+
* // 标准 XYZ 瓦片
|
|
38
|
+
* addUrlTemplate({
|
|
39
|
+
* id: 'osm',
|
|
40
|
+
* url: 'https://tile.openstreetmap.org/{z}/{x}/{y}.png'
|
|
41
|
+
* })
|
|
42
|
+
*
|
|
43
|
+
* @example
|
|
44
|
+
* // 带子域名的瓦片
|
|
45
|
+
* addUrlTemplate({
|
|
46
|
+
* id: 'carto',
|
|
47
|
+
* url: 'https://{s}.basemaps.cartocdn.com/light_all/{z}/{x}/{y}.png',
|
|
48
|
+
* subdomains: 'abcd'
|
|
49
|
+
* })
|
|
50
|
+
*
|
|
51
|
+
* @example
|
|
52
|
+
* // ESRI 风格(y/x 顺序)
|
|
53
|
+
* addUrlTemplate({
|
|
54
|
+
* id: 'esri',
|
|
55
|
+
* url: 'https://server.arcgisonline.com/ArcGIS/rest/services/World_Imagery/MapServer/tile/{z}/{y}/{x}'
|
|
56
|
+
* })
|
|
57
|
+
*/
|
|
58
|
+
addUrlTemplate(options: IUrlTemplateOverlayOptions): UrlTemplateTilesOverlay | null;
|
|
59
|
+
addWMS(options: IWMSTilesOverlayOptions): Promise<WMSTilesOverlay | null>;
|
|
60
|
+
addWMTS(options: IWMTSTilesOverlayOptions): Promise<WMTSTilesOverlay | null>;
|
|
61
|
+
/**
|
|
62
|
+
* 移除 overlay
|
|
63
|
+
*/
|
|
64
|
+
remove(id: string): boolean;
|
|
65
|
+
/**
|
|
66
|
+
* 获取 overlay 实例
|
|
67
|
+
*/
|
|
68
|
+
get(id: string): any | undefined;
|
|
69
|
+
/**
|
|
70
|
+
* 检查 overlay 是否存在
|
|
71
|
+
*/
|
|
72
|
+
has(id: string): boolean;
|
|
73
|
+
/**
|
|
74
|
+
* 设置 overlay 可见性
|
|
75
|
+
*/
|
|
76
|
+
setVisible(id: string, visible: boolean): boolean;
|
|
77
|
+
/**
|
|
78
|
+
* 设置 overlay 透明度
|
|
79
|
+
*/
|
|
80
|
+
setOpacity(id: string, opacity: number): boolean;
|
|
81
|
+
/**
|
|
82
|
+
* 设置 overlay 层级
|
|
83
|
+
*/
|
|
84
|
+
setOrder(id: string, order: number): boolean;
|
|
85
|
+
/**
|
|
86
|
+
* 获取 overlay 层级
|
|
87
|
+
*/
|
|
88
|
+
getOrder(id: string): number;
|
|
89
|
+
/**
|
|
90
|
+
* 将 overlay 移到最顶层
|
|
91
|
+
*/
|
|
92
|
+
bringToFront(id: string): boolean;
|
|
93
|
+
/**
|
|
94
|
+
* 将 overlay 移到最底层
|
|
95
|
+
*/
|
|
96
|
+
sendToBack(id: string): boolean;
|
|
97
|
+
/**
|
|
98
|
+
* 从 ResourceManager 恢复所有资源
|
|
99
|
+
*/
|
|
100
|
+
restoreFromResourceManager(): void;
|
|
101
|
+
/**
|
|
102
|
+
* 根据资源配置创建 overlay(不保存到 ResourceManager)
|
|
103
|
+
*/
|
|
104
|
+
private _createOverlayFromResource;
|
|
105
|
+
/**
|
|
106
|
+
* 获取所有 overlay ID
|
|
107
|
+
*/
|
|
108
|
+
getIds(): string[];
|
|
109
|
+
/**
|
|
110
|
+
* 获取 overlay 数量
|
|
111
|
+
*/
|
|
112
|
+
get count(): number;
|
|
113
|
+
/**
|
|
114
|
+
* 获取本地影像数量(不依赖 ResourceManager)
|
|
115
|
+
*/
|
|
116
|
+
private _getLocalImageryCount;
|
|
117
|
+
/**
|
|
118
|
+
* 只清理实例(保留 ResourceManager 中的配置)
|
|
119
|
+
*/
|
|
120
|
+
disposeInstances(): void;
|
|
121
|
+
/**
|
|
122
|
+
* 完全销毁(清理实例和配置)
|
|
123
|
+
*/
|
|
124
|
+
dispose(): void;
|
|
125
|
+
}
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
import { IGeoJSONOverlayOptions, ICesiumIonOverlayOptions, ITMSTilesOverlayOptions, IXYZTilesOverlayOptions, IWMSTilesOverlayOptions, IWMTSTilesOverlayOptions, OverlayType } from './types';
|
|
2
|
+
/**
|
|
3
|
+
* Overlay 资源配置
|
|
4
|
+
*/
|
|
5
|
+
export interface IOverlayResource {
|
|
6
|
+
id: string;
|
|
7
|
+
type: OverlayType;
|
|
8
|
+
options: IGeoJSONOverlayOptions | ICesiumIonOverlayOptions | ITMSTilesOverlayOptions | IXYZTilesOverlayOptions | IWMSTilesOverlayOptions | IWMTSTilesOverlayOptions;
|
|
9
|
+
}
|
|
10
|
+
/**
|
|
11
|
+
* ResourceManager 资源管理器
|
|
12
|
+
* 负责记录和管理所有资源的配置信息(不持有实例引用)
|
|
13
|
+
*
|
|
14
|
+
* 设计理念:
|
|
15
|
+
* - 只存储配置数据,不存储运行时实例
|
|
16
|
+
* - 切换地形时,通过配置数据重建所有资源
|
|
17
|
+
* - 解耦配置管理和实例管理
|
|
18
|
+
*/
|
|
19
|
+
export declare class ResourceManager {
|
|
20
|
+
/** Overlay 资源配置 */
|
|
21
|
+
private _overlays;
|
|
22
|
+
/**
|
|
23
|
+
* 添加 Overlay 资源配置
|
|
24
|
+
*/
|
|
25
|
+
addOverlay(resource: IOverlayResource): void;
|
|
26
|
+
/**
|
|
27
|
+
* 获取 Overlay 资源配置
|
|
28
|
+
*/
|
|
29
|
+
getOverlay(id: string): IOverlayResource | undefined;
|
|
30
|
+
/**
|
|
31
|
+
* 移除 Overlay 资源配置
|
|
32
|
+
*/
|
|
33
|
+
removeOverlay(id: string): boolean;
|
|
34
|
+
/**
|
|
35
|
+
* 检查 Overlay 是否存在
|
|
36
|
+
*/
|
|
37
|
+
hasOverlay(id: string): boolean;
|
|
38
|
+
/**
|
|
39
|
+
* 获取所有 Overlay 资源配置
|
|
40
|
+
*/
|
|
41
|
+
getAllOverlays(): IOverlayResource[];
|
|
42
|
+
/**
|
|
43
|
+
* 获取指定类型的 Overlay 资源配置
|
|
44
|
+
*/
|
|
45
|
+
getOverlaysByType(type: OverlayType): IOverlayResource[];
|
|
46
|
+
/**
|
|
47
|
+
* 获取所有 Overlay 的 ID 列表
|
|
48
|
+
*/
|
|
49
|
+
getOverlayIds(): string[];
|
|
50
|
+
/**
|
|
51
|
+
* 获取 Overlay 数量
|
|
52
|
+
*/
|
|
53
|
+
get overlayCount(): number;
|
|
54
|
+
/**
|
|
55
|
+
* 获取影像类型的 Overlay 数量
|
|
56
|
+
*/
|
|
57
|
+
getImageryOverlayCount(): number;
|
|
58
|
+
/**
|
|
59
|
+
* 更新 Overlay 配置
|
|
60
|
+
*/
|
|
61
|
+
updateOverlay(id: string, updates: Partial<IOverlayResource['options']>): boolean;
|
|
62
|
+
/**
|
|
63
|
+
* 清空所有资源配置
|
|
64
|
+
*/
|
|
65
|
+
clear(): void;
|
|
66
|
+
/**
|
|
67
|
+
* 导出所有资源配置(用于调试或持久化)
|
|
68
|
+
*/
|
|
69
|
+
export(): {
|
|
70
|
+
overlays: IOverlayResource[];
|
|
71
|
+
};
|
|
72
|
+
/**
|
|
73
|
+
* 导入资源配置
|
|
74
|
+
*/
|
|
75
|
+
import(data: {
|
|
76
|
+
overlays?: IOverlayResource[];
|
|
77
|
+
}): void;
|
|
78
|
+
}
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
import { ITerrainConfig } from './types';
|
|
2
|
+
/**
|
|
3
|
+
* 地形列表项(面向前端展示)
|
|
4
|
+
*/
|
|
5
|
+
export interface ITerrainListItem {
|
|
6
|
+
/** 唯一标识符 */
|
|
7
|
+
id: string;
|
|
8
|
+
/** 地形配置 */
|
|
9
|
+
config: ITerrainConfig;
|
|
10
|
+
/** 是否为当前激活的地形 */
|
|
11
|
+
active: boolean;
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* TerrainManager 地形管理器
|
|
15
|
+
* 纯数据注册表,记录已添加的地形配置并跟踪当前激活项,供前端列表展示。
|
|
16
|
+
* 不持有运行时实例,不触发切换逻辑。
|
|
17
|
+
*/
|
|
18
|
+
export declare class TerrainManager {
|
|
19
|
+
/** 地形配置映射表 */
|
|
20
|
+
private _terrains;
|
|
21
|
+
/** 当前激活的地形 ID */
|
|
22
|
+
private _currentId;
|
|
23
|
+
/**
|
|
24
|
+
* 获取当前激活的地形 ID
|
|
25
|
+
*/
|
|
26
|
+
get currentId(): string | null;
|
|
27
|
+
/**
|
|
28
|
+
* 获取已注册的地形数量
|
|
29
|
+
*/
|
|
30
|
+
get count(): number;
|
|
31
|
+
/**
|
|
32
|
+
* 添加地形配置
|
|
33
|
+
*/
|
|
34
|
+
add(config: ITerrainConfig): void;
|
|
35
|
+
/**
|
|
36
|
+
* 移除地形配置
|
|
37
|
+
*/
|
|
38
|
+
remove(id: string): boolean;
|
|
39
|
+
/**
|
|
40
|
+
* 设置当前激活的地形 ID
|
|
41
|
+
*/
|
|
42
|
+
setCurrentId(id: string | null): void;
|
|
43
|
+
/**
|
|
44
|
+
* 检查地形是否已注册
|
|
45
|
+
*/
|
|
46
|
+
has(id: string): boolean;
|
|
47
|
+
/**
|
|
48
|
+
* 获取指定地形配置
|
|
49
|
+
*/
|
|
50
|
+
get(id: string): ITerrainConfig | undefined;
|
|
51
|
+
/**
|
|
52
|
+
* 获取当前激活的地形配置
|
|
53
|
+
*/
|
|
54
|
+
getCurrent(): ITerrainConfig | undefined;
|
|
55
|
+
/**
|
|
56
|
+
* 获取所有地形配置列表(用于前端列表渲染)
|
|
57
|
+
*/
|
|
58
|
+
getList(): ITerrainListItem[];
|
|
59
|
+
/**
|
|
60
|
+
* 获取所有地形配置
|
|
61
|
+
*/
|
|
62
|
+
getAll(): ITerrainConfig[];
|
|
63
|
+
/**
|
|
64
|
+
* 获取所有地形 ID
|
|
65
|
+
*/
|
|
66
|
+
getIds(): string[];
|
|
67
|
+
/**
|
|
68
|
+
* 清空所有地形配置
|
|
69
|
+
*/
|
|
70
|
+
clear(): void;
|
|
71
|
+
/**
|
|
72
|
+
* 销毁管理器
|
|
73
|
+
*/
|
|
74
|
+
dispose(): void;
|
|
75
|
+
}
|
|
@@ -0,0 +1,218 @@
|
|
|
1
|
+
import { TilesRenderer } from 'um-3d-tiles-renderer';
|
|
2
|
+
import { TilesFadePlugin, UpdateOnChangePlugin, ImageOverlayPlugin, ReorientationPlugin } from 'um-3d-tiles-renderer/plugins';
|
|
3
|
+
import { default as SoonSpace } from 'soonspacejs';
|
|
4
|
+
import { TileCustomMaterialPlugin } from './plugins';
|
|
5
|
+
import { OverlayManager } from './OverlayManager';
|
|
6
|
+
import { ResourceManager } from './ResourceManager';
|
|
7
|
+
import { TerrainManager } from './TerrainManager';
|
|
8
|
+
import { ITerrainTilesRendererOptions, IGeoJSONOverlayOptions, ICesiumIonOverlayOptions, ITMSTilesOverlayOptions, IXYZTilesOverlayOptions, IWMSTilesOverlayOptions, IWMTSTilesOverlayOptions, IUrlTemplateOverlayOptions, AlphaClipMode, ITerrainConfig } from './types';
|
|
9
|
+
/**
|
|
10
|
+
* TerrainTilesRenderer 地形渲染器
|
|
11
|
+
* 支持多种地形源和多个叠加层
|
|
12
|
+
*
|
|
13
|
+
* 注意:切换地形时会创建新的 TilesRenderer 实例以避免状态残留问题
|
|
14
|
+
*/
|
|
15
|
+
export declare class TerrainTilesRenderer {
|
|
16
|
+
readonly ssp: SoonSpace;
|
|
17
|
+
readonly defaultTerrainId = "__default_terrain__";
|
|
18
|
+
readonly defaultImageryId = "__default_imagery__";
|
|
19
|
+
tiles: TilesRenderer;
|
|
20
|
+
tilesFadePlugin?: TilesFadePlugin;
|
|
21
|
+
updateOnChangePlugin?: UpdateOnChangePlugin;
|
|
22
|
+
customMaterialPlugin?: TileCustomMaterialPlugin;
|
|
23
|
+
imageOverlayPlugin?: ImageOverlayPlugin;
|
|
24
|
+
reorientationPlugin?: ReorientationPlugin;
|
|
25
|
+
/** 资源管理器(存储配置) */
|
|
26
|
+
resourceManager: ResourceManager;
|
|
27
|
+
/** 地形管理器(记录地形列表) */
|
|
28
|
+
terrainManager: TerrainManager;
|
|
29
|
+
/** Overlay 管理器(管理实例) */
|
|
30
|
+
overlayManager: OverlayManager;
|
|
31
|
+
/** 当前地形配置 */
|
|
32
|
+
private _currentTerrainConfig;
|
|
33
|
+
/** Alpha 裁剪模式 */
|
|
34
|
+
private _alphaClipMode;
|
|
35
|
+
/** 是否已启用(添加到场景) */
|
|
36
|
+
private _enabled;
|
|
37
|
+
loedTilesSets: Set<() => void>;
|
|
38
|
+
options: ITerrainTilesRendererOptions;
|
|
39
|
+
/**
|
|
40
|
+
* 是否使用 Cesium Ion 地形
|
|
41
|
+
*/
|
|
42
|
+
get isCesiumIon(): boolean;
|
|
43
|
+
/**
|
|
44
|
+
* 获取当前地形配置
|
|
45
|
+
*/
|
|
46
|
+
get currentTerrainConfig(): ITerrainConfig;
|
|
47
|
+
/**
|
|
48
|
+
* 获取/设置最大深度(GUI 可控)
|
|
49
|
+
*/
|
|
50
|
+
get maxDepth(): number;
|
|
51
|
+
set maxDepth(value: number);
|
|
52
|
+
/**
|
|
53
|
+
* 获取/设置误差目标(GUI 可控)
|
|
54
|
+
*/
|
|
55
|
+
get errorTarget(): number;
|
|
56
|
+
set errorTarget(value: number);
|
|
57
|
+
/**
|
|
58
|
+
* 获取/设置地形显示状态(GUI 可控)
|
|
59
|
+
*/
|
|
60
|
+
get showTerrain(): boolean;
|
|
61
|
+
set showTerrain(value: boolean);
|
|
62
|
+
/**
|
|
63
|
+
* 获取/设置 Alpha 裁剪模式(GUI 可控)
|
|
64
|
+
* - 用于支持 GeoJSON mask 功能
|
|
65
|
+
*/
|
|
66
|
+
get alphaClipMode(): AlphaClipMode;
|
|
67
|
+
set alphaClipMode(value: AlphaClipMode);
|
|
68
|
+
constructor(ssp: SoonSpace, options?: ITerrainTilesRendererOptions);
|
|
69
|
+
private _initTilesRenderer;
|
|
70
|
+
/**
|
|
71
|
+
* 创建 TilesRenderer(统一方法,支持自定义地形和 Cesium Ion 地形)
|
|
72
|
+
* @param config 地形配置
|
|
73
|
+
*/
|
|
74
|
+
private _initPlugins;
|
|
75
|
+
/**
|
|
76
|
+
* 销毁当前 tiles 实例
|
|
77
|
+
*/
|
|
78
|
+
private _disposeTilesRenderer;
|
|
79
|
+
/**
|
|
80
|
+
* 更新所有已加载模型的 alpha 裁剪模式
|
|
81
|
+
*/
|
|
82
|
+
private _updateAlphaClipMode;
|
|
83
|
+
/**
|
|
84
|
+
* 设置地形
|
|
85
|
+
* 会创建新的 TilesRenderer 实例以避免状态残留问题
|
|
86
|
+
* @param config 地形配置
|
|
87
|
+
* @example
|
|
88
|
+
* // 设置量化网格地形
|
|
89
|
+
* tilesRenderer.setTerrain({
|
|
90
|
+
* type: TerrainType.QUANTIZED_MESH,
|
|
91
|
+
* url: 'https://terrain.example.com/'
|
|
92
|
+
* })
|
|
93
|
+
*
|
|
94
|
+
* // 设置 Cesium Ion 地形
|
|
95
|
+
* tilesRenderer.setTerrain({
|
|
96
|
+
* type: TerrainType.CESIUM_ION,
|
|
97
|
+
* apiToken: 'your-token',
|
|
98
|
+
* assetId: '1'
|
|
99
|
+
* })
|
|
100
|
+
*/
|
|
101
|
+
setTerrain(config: ITerrainConfig, options?: ITerrainTilesRendererOptions | undefined): void;
|
|
102
|
+
/**
|
|
103
|
+
* 添加 GeoJSON Overlay
|
|
104
|
+
* @example
|
|
105
|
+
* tilesRenderer.addGeoJSON({
|
|
106
|
+
* id: 'china-boundary',
|
|
107
|
+
* url: './data/china.geojson',
|
|
108
|
+
* color: '#ff0000',
|
|
109
|
+
* opacity: 0.8
|
|
110
|
+
* })
|
|
111
|
+
*/
|
|
112
|
+
addGeoJSON(options: IGeoJSONOverlayOptions): import('um-3d-tiles-renderer/plugins').GeoJSONOverlay | null;
|
|
113
|
+
/**
|
|
114
|
+
* 添加 Cesium Ion Overlay
|
|
115
|
+
*/
|
|
116
|
+
addCesiumIonOverlay(options: ICesiumIonOverlayOptions): import('um-3d-tiles-renderer/plugins').CesiumIonOverlay | null;
|
|
117
|
+
/**
|
|
118
|
+
* 添加 TMS Tiles Overlay
|
|
119
|
+
*/
|
|
120
|
+
addTMSOverlay(options: ITMSTilesOverlayOptions): import('um-3d-tiles-renderer/plugins').TMSTilesOverlay | null;
|
|
121
|
+
/**
|
|
122
|
+
* 添加 XYZ Tiles Overlay
|
|
123
|
+
*/
|
|
124
|
+
addXYZOverlay(options: IXYZTilesOverlayOptions): import('um-3d-tiles-renderer/plugins').XYZTilesOverlay | null;
|
|
125
|
+
/**
|
|
126
|
+
* 添加 URL Template Overlay
|
|
127
|
+
*
|
|
128
|
+
* 支持多种 URL 模板变量:
|
|
129
|
+
* - `{z}`, `{x}`, `{y}` - 标准 XYZ 坐标
|
|
130
|
+
* - `{s}` - 子域名轮换
|
|
131
|
+
* - `{reverseY}` - TMS 风格的 Y 坐标
|
|
132
|
+
* - `{westDegrees}`, `{southDegrees}`, `{eastDegrees}`, `{northDegrees}` - 地理边界框
|
|
133
|
+
*
|
|
134
|
+
* @example
|
|
135
|
+
* tilesPlugin.addUrlTemplateOverlay({
|
|
136
|
+
* id: 'osm',
|
|
137
|
+
* url: 'https://tile.openstreetmap.org/{z}/{x}/{y}.png'
|
|
138
|
+
* })
|
|
139
|
+
*
|
|
140
|
+
* @example
|
|
141
|
+
* tilesPlugin.addUrlTemplateOverlay({
|
|
142
|
+
* id: 'carto',
|
|
143
|
+
* url: 'https://{s}.basemaps.cartocdn.com/light_all/{z}/{x}/{y}.png',
|
|
144
|
+
* subdomains: 'abcd'
|
|
145
|
+
* })
|
|
146
|
+
*/
|
|
147
|
+
addUrlTemplateOverlay(options: IUrlTemplateOverlayOptions): import('um-3d-tiles-renderer/plugins').UrlTemplateTilesOverlay | null;
|
|
148
|
+
/**
|
|
149
|
+
* 添加 WMS Tiles Overlay
|
|
150
|
+
*/
|
|
151
|
+
addWMSOverlay(options: IWMSTilesOverlayOptions): Promise<import('um-3d-tiles-renderer/plugins').WMSTilesOverlay | null>;
|
|
152
|
+
/**
|
|
153
|
+
* 添加 WMTS Tiles Overlay
|
|
154
|
+
*/
|
|
155
|
+
addWMTSOverlay(options: IWMTSTilesOverlayOptions): Promise<import('um-3d-tiles-renderer/plugins').WMTSTilesOverlay | null>;
|
|
156
|
+
/**
|
|
157
|
+
* 移除指定 overlay
|
|
158
|
+
*/
|
|
159
|
+
removeOverlay(id: string): boolean;
|
|
160
|
+
/**
|
|
161
|
+
* 更新 GeoJSON 颜色
|
|
162
|
+
*/
|
|
163
|
+
updateGeoJSONColor(id: string, color: string): boolean;
|
|
164
|
+
/**
|
|
165
|
+
* 更新 GeoJSON 模式
|
|
166
|
+
* - overlay: 普通叠加显示
|
|
167
|
+
* - mask: 只显示 GeoJSON 区域内的地形
|
|
168
|
+
* - invertMask: 只显示 GeoJSON 区域外的地形
|
|
169
|
+
*/
|
|
170
|
+
updateGeoJSONMode(id: string, mode: 'overlay' | 'mask' | 'invertMask'): boolean;
|
|
171
|
+
/**
|
|
172
|
+
* 更新 GeoJSON 描边样式
|
|
173
|
+
*/
|
|
174
|
+
updateGeoJSONStrokeStyle(id: string, strokeStyle: string): boolean;
|
|
175
|
+
/**
|
|
176
|
+
* 更新 GeoJSON 描边宽度
|
|
177
|
+
*/
|
|
178
|
+
updateGeoJSONStrokeWidth(id: string, strokeWidth: number): boolean;
|
|
179
|
+
/**
|
|
180
|
+
* 更新 GeoJSON 填充样式
|
|
181
|
+
*/
|
|
182
|
+
updateGeoJSONFillStyle(id: string, fillStyle: string): boolean;
|
|
183
|
+
/**
|
|
184
|
+
* 设置 overlay 层级顺序
|
|
185
|
+
* @param id overlay ID
|
|
186
|
+
* @param order 层级顺序,数值越大越靠上
|
|
187
|
+
* @example
|
|
188
|
+
* tilesRenderer.setOverlayOrder('china-boundary', 10)
|
|
189
|
+
*/
|
|
190
|
+
setOverlayOrder(id: string, order: number): boolean;
|
|
191
|
+
/**
|
|
192
|
+
* 获取 overlay 当前的层级顺序
|
|
193
|
+
* @param id overlay ID
|
|
194
|
+
*/
|
|
195
|
+
getOverlayOrder(id: string): number;
|
|
196
|
+
/**
|
|
197
|
+
* 将 overlay 移动到最顶层
|
|
198
|
+
*/
|
|
199
|
+
bringOverlayToFront(id: string): boolean;
|
|
200
|
+
/**
|
|
201
|
+
* 将 overlay 移动到最底层
|
|
202
|
+
*/
|
|
203
|
+
sendOverlayToBack(id: string): boolean;
|
|
204
|
+
/**
|
|
205
|
+
* 设置 overlay 可见性
|
|
206
|
+
*/
|
|
207
|
+
setOverlayVisible(id: string, visible: boolean): boolean;
|
|
208
|
+
/**
|
|
209
|
+
* 设置 overlay 透明度
|
|
210
|
+
*/
|
|
211
|
+
setOverlayOpacity(id: string, opacity: number): boolean;
|
|
212
|
+
render: () => void;
|
|
213
|
+
beforeRenderHandler: () => void;
|
|
214
|
+
enable(): void;
|
|
215
|
+
disable(): void;
|
|
216
|
+
invalidate(lon: number, lat: number, alt: number): () => void;
|
|
217
|
+
dispose(): void;
|
|
218
|
+
}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
export { TerrainTilesRenderer, } from './TerrainTilesRenderer';
|
|
2
|
+
export { OverlayManager, } from './OverlayManager';
|
|
3
|
+
export { ResourceManager, } from './ResourceManager';
|
|
4
|
+
export { TerrainManager, } from './TerrainManager';
|
|
5
|
+
export { TileCustomMaterialPlugin, } from './plugins';
|
|
6
|
+
export * from './types';
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { Object3D } from 'three';
|
|
2
|
+
import { TilesRenderer } from 'um-3d-tiles-renderer';
|
|
3
|
+
export type AlphaClipMode = 'alphaTest' | 'transparent' | 'alphaToCoverage';
|
|
4
|
+
/**
|
|
5
|
+
* 自定义材质插件
|
|
6
|
+
* 参考 ionExample.js:只修改材质的 alpha 属性,不替换材质
|
|
7
|
+
* 支持设置 alpha 裁剪模式(用于 GeoJSON mask)
|
|
8
|
+
*/
|
|
9
|
+
export declare class TileCustomMaterialPlugin {
|
|
10
|
+
priority: number;
|
|
11
|
+
/** Alpha 裁剪模式 */
|
|
12
|
+
alphaClipMode: AlphaClipMode;
|
|
13
|
+
/**
|
|
14
|
+
* um-3d-tiles-renderer 插件接口:处理新加载的瓦片模型
|
|
15
|
+
*/
|
|
16
|
+
processTileModel(scene: Object3D): void;
|
|
17
|
+
/**
|
|
18
|
+
* 更新所有已加载模型的材质
|
|
19
|
+
* @param tiles TilesRenderer 实例
|
|
20
|
+
*/
|
|
21
|
+
updateAllLoadedModels(tiles: TilesRenderer): void;
|
|
22
|
+
/**
|
|
23
|
+
* 应用配置到单个材质
|
|
24
|
+
*/
|
|
25
|
+
private _applyToMaterial;
|
|
26
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { TileCustomMaterialPlugin, } from './TileCustomMaterialPlugin';
|