@ino-cesium/layers 0.0.26-beta.3 → 0.0.26-beta.5
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/README.MD +3 -3
- package/dist/index.d.ts +232 -27
- package/dist/index.js +1 -1
- package/package.json +3 -2
package/README.MD
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
# ino-cesium 图层加载
|
|
2
|
-
|
|
3
|
-
图层加载
|
|
1
|
+
# ino-cesium 图层加载
|
|
2
|
+
|
|
3
|
+
图层加载
|
package/dist/index.d.ts
CHANGED
|
@@ -1,53 +1,90 @@
|
|
|
1
1
|
import * as Cesium from 'cesium';
|
|
2
|
+
import Cesium__default from 'cesium';
|
|
3
|
+
|
|
4
|
+
interface ILayerLoader {
|
|
5
|
+
destroy: () => void;
|
|
6
|
+
isDestroyed: () => boolean;
|
|
7
|
+
remove: () => void;
|
|
8
|
+
setOpacity: (opacity: number) => void;
|
|
9
|
+
flyTo: () => void;
|
|
10
|
+
}
|
|
11
|
+
interface IImageryLayerLoader extends ILayerLoader {
|
|
12
|
+
layers: Cesium__default.ImageryLayer[];
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
/**
|
|
16
|
+
* @module 加载天地图图层
|
|
17
|
+
*/
|
|
2
18
|
|
|
3
19
|
/**
|
|
4
20
|
*
|
|
5
21
|
* vec:矢量底图、cva:矢量标注、img:影像底图、cia:影像标注
|
|
6
22
|
* ter:地形晕渲、cta:地形标注、eva:矢量英文标注、eia:影像英文标注
|
|
7
|
-
* @param
|
|
8
|
-
* @param
|
|
23
|
+
* @param option
|
|
24
|
+
* @param option.viewer
|
|
25
|
+
* @param option.token
|
|
26
|
+
* @param option.vec
|
|
27
|
+
* @param option.label
|
|
28
|
+
* @param option.zIndex
|
|
9
29
|
*/
|
|
10
|
-
declare const loadTianDiTu: (option: ILoadTiandituOptions) =>
|
|
11
|
-
layers: Cesium.ImageryLayer[];
|
|
12
|
-
remove: () => void;
|
|
13
|
-
setOpacity: (opacity: number) => void;
|
|
14
|
-
};
|
|
30
|
+
declare const loadTianDiTu: (option: ILoadTiandituOptions) => IImageryLayerLoader;
|
|
15
31
|
interface ILoadTiandituOptions {
|
|
16
32
|
viewer: Cesium.Viewer;
|
|
17
33
|
token: string;
|
|
18
34
|
vec?: boolean;
|
|
35
|
+
crs?: string;
|
|
19
36
|
label?: boolean;
|
|
20
37
|
zIndex?: number;
|
|
21
38
|
}
|
|
22
|
-
declare function setImageLayerTheme(viewer: Cesium.Viewer, options?: ISetImageLayerOptions): void;
|
|
23
|
-
interface ISetImageLayerOptions {
|
|
24
|
-
brightness?: number;
|
|
25
|
-
contrast?: number;
|
|
26
|
-
gamma?: number;
|
|
27
|
-
hue?: number;
|
|
28
|
-
saturation?: number;
|
|
29
|
-
invertColor?: boolean;
|
|
30
|
-
filterColor?: Cesium.Color;
|
|
31
|
-
}
|
|
32
39
|
|
|
33
|
-
declare const
|
|
34
|
-
|
|
35
|
-
setHeightOffset: (heightOffset: number) => void;
|
|
36
|
-
remove: () => void;
|
|
37
|
-
flyTo: () => void;
|
|
38
|
-
}>;
|
|
40
|
+
declare const load3dTilesFromUrl: (option: ILoad3dtilesOptions) => Promise<I3dTilesLoader>;
|
|
41
|
+
declare const load3dTiles: (lOptions: ILoad3dtilesOptions) => Promise<I3dTilesLoader>;
|
|
39
42
|
/**
|
|
40
43
|
* 设置3dTiles的偏移高度
|
|
41
44
|
* @param tileset
|
|
42
45
|
* @param heightOffset
|
|
43
46
|
*/
|
|
44
47
|
declare const setHeightOffsetFor3dTiles: (tileset: Cesium.Cesium3DTileset, heightOffset: number) => void;
|
|
45
|
-
|
|
46
|
-
|
|
48
|
+
interface I3dTilesLoader {
|
|
49
|
+
tileset: Cesium.Cesium3DTileset;
|
|
50
|
+
/**
|
|
51
|
+
* 3dTiles的高度偏移量
|
|
52
|
+
*/
|
|
53
|
+
heightOffset: number;
|
|
54
|
+
remove: () => void;
|
|
55
|
+
flyTo: () => void;
|
|
56
|
+
flyToByFeatureId: (id: string) => Promise<boolean>;
|
|
57
|
+
twinkingByFeatureId: (id: string) => void;
|
|
58
|
+
twinkingByTileId: (id: string) => void;
|
|
59
|
+
setHeightOffset: (heightOffsetValue: number) => void;
|
|
60
|
+
setOpacity: (opacity: number) => void;
|
|
61
|
+
setScale: (scale: number) => void;
|
|
62
|
+
setSplitDirection: (splitDirection: Cesium.SplitDirection) => void;
|
|
63
|
+
setSelectByFeatureIds: (id?: string) => void;
|
|
64
|
+
setSelectByTileIds: (id?: string) => void;
|
|
65
|
+
setSelectColor: (color: string) => void;
|
|
66
|
+
setBrightness: (brightness: number) => void;
|
|
67
|
+
setVisible: (visible: boolean) => void;
|
|
68
|
+
setVisibleByFeatureIds: (ids: string[], visible: boolean) => void;
|
|
69
|
+
setVisibleByTileId: (ids: string[], visible: boolean) => void;
|
|
70
|
+
getFeatures: () => any[];
|
|
71
|
+
getFeaturesGroupByTileId: () => any;
|
|
72
|
+
gpuUsageMonitor: (change: (value: string) => any) => {
|
|
73
|
+
close: () => void;
|
|
74
|
+
};
|
|
75
|
+
/**
|
|
76
|
+
* 设置显存占用 单位为MB
|
|
77
|
+
* @param size
|
|
78
|
+
*/
|
|
79
|
+
setGpuUsageSize: (size: number) => void;
|
|
80
|
+
getGpuUsageSize: () => number;
|
|
81
|
+
}
|
|
47
82
|
interface ILoad3dtilesOptions {
|
|
48
83
|
viewer: Cesium.Viewer;
|
|
49
84
|
url: string;
|
|
85
|
+
allTilesLoaded?: (tileFeatures: any, tileFeatureMap: any) => void;
|
|
50
86
|
options: Cesium.Cesium3DTileset.ConstructorOptions;
|
|
87
|
+
token?: string;
|
|
51
88
|
}
|
|
52
89
|
/**
|
|
53
90
|
* 3dTiles的坐标变换
|
|
@@ -98,5 +135,173 @@ interface ILoadI3sOptions {
|
|
|
98
135
|
options: Cesium.I3SDataProvider.ConstructorOptions;
|
|
99
136
|
}
|
|
100
137
|
|
|
101
|
-
|
|
102
|
-
|
|
138
|
+
declare function setImageLayerTheme(viewer: Cesium.Viewer, options?: ISetImageLayerOptions): void;
|
|
139
|
+
interface ISetImageLayerOptions {
|
|
140
|
+
brightness?: number;
|
|
141
|
+
contrast?: number;
|
|
142
|
+
gamma?: number;
|
|
143
|
+
hue?: number;
|
|
144
|
+
saturation?: number;
|
|
145
|
+
invertColor?: boolean;
|
|
146
|
+
filterColor?: Cesium.Color;
|
|
147
|
+
}
|
|
148
|
+
|
|
149
|
+
/**
|
|
150
|
+
* @module wmts图层
|
|
151
|
+
*/
|
|
152
|
+
|
|
153
|
+
/**
|
|
154
|
+
* 使用WebMapTileServiceImageryProvider或者UrlTemplateImageryProvider添加wmts图层
|
|
155
|
+
* @param options 图层配置
|
|
156
|
+
* @param options.url wmts图层url
|
|
157
|
+
* @param options.zIndex wmts图层索引
|
|
158
|
+
* @param options.crs wmts图层投影系,默认EPSG:3857
|
|
159
|
+
* - EPSG:4326 经纬度投影
|
|
160
|
+
* - EPSG:3857 墨卡托投影
|
|
161
|
+
* @param options.zLevelOffset z偏移量,默认0
|
|
162
|
+
* @param options.minimumLevel 最小层级,默认0
|
|
163
|
+
* @param options.maximumLevel 最大层级,默认18
|
|
164
|
+
* @param options.subdomains 子域名
|
|
165
|
+
* @param options.kvpInfo
|
|
166
|
+
* - wmts图层kvp参数,使用WebMapTileServiceImageryProvider添加wmts图层必须参数
|
|
167
|
+
* @returns {SuperMap3D.ImageryLayer}
|
|
168
|
+
*/
|
|
169
|
+
declare const loadWmtsLayer: (options: IWmtsLayerLoaderOptions) => IImageryLayerLoader;
|
|
170
|
+
interface IWmtsLayerLoaderOptions {
|
|
171
|
+
viewer: Cesium.Viewer;
|
|
172
|
+
url: string;
|
|
173
|
+
/**
|
|
174
|
+
* 图层层级
|
|
175
|
+
*/
|
|
176
|
+
zIndex?: number;
|
|
177
|
+
/**
|
|
178
|
+
* wmts图层投影系,默认EPSG:3857
|
|
179
|
+
* - EPSG:4326 经纬度投影
|
|
180
|
+
* - EPSG:3857 墨卡托投影
|
|
181
|
+
*/
|
|
182
|
+
crs?: string;
|
|
183
|
+
/**
|
|
184
|
+
* z偏移量,默认0
|
|
185
|
+
* 有些服务发布出的图层z层级从0开始,有些从1开始,
|
|
186
|
+
* Cesium是从1开始,所以如果图层z层级从0开始,需要设置zLevelOffset为1
|
|
187
|
+
*/
|
|
188
|
+
zLevelOffset?: number;
|
|
189
|
+
minimumLevel?: number;
|
|
190
|
+
maximumLevel?: number;
|
|
191
|
+
subdomains?: string[];
|
|
192
|
+
/**
|
|
193
|
+
* 加载kvp风格wmts图层,使用WebMapTileServiceImageryProvider添加wmts图层必须参数
|
|
194
|
+
*/
|
|
195
|
+
kvpInfo?: {
|
|
196
|
+
layer: string;
|
|
197
|
+
style: string;
|
|
198
|
+
format: string;
|
|
199
|
+
tileMatrixSetID: string;
|
|
200
|
+
/**
|
|
201
|
+
* 会根据zLevelOffset和maximumLevel自动生成
|
|
202
|
+
* 默认为zLevelOffset到maximumLevel的数组
|
|
203
|
+
*/
|
|
204
|
+
tileMatrixLabels?: string[];
|
|
205
|
+
};
|
|
206
|
+
}
|
|
207
|
+
|
|
208
|
+
/**
|
|
209
|
+
* 使用WebMapServiceImageryProvider添加wms图层
|
|
210
|
+
*/
|
|
211
|
+
declare const loadWmsLayer: (options: IWmsLayerLoaderOptions) => IImageryLayerLoader;
|
|
212
|
+
interface IWmsLayerLoaderOptions {
|
|
213
|
+
viewer: Cesium.Viewer;
|
|
214
|
+
url: string;
|
|
215
|
+
/**
|
|
216
|
+
* 图层层级
|
|
217
|
+
*/
|
|
218
|
+
zIndex?: number;
|
|
219
|
+
/**
|
|
220
|
+
* wms图层投影系,默认EPSG:3857
|
|
221
|
+
* - EPSG:4326 经纬度投影
|
|
222
|
+
* - EPSG:3857 墨卡托投影
|
|
223
|
+
*/
|
|
224
|
+
crs?: string;
|
|
225
|
+
/**
|
|
226
|
+
* 图层名称
|
|
227
|
+
* 默认为url中的最后一段
|
|
228
|
+
*/
|
|
229
|
+
layerName?: string;
|
|
230
|
+
minimumLevel?: number;
|
|
231
|
+
maximumLevel?: number;
|
|
232
|
+
subdomains?: string[];
|
|
233
|
+
parameters?: Record<string, string>;
|
|
234
|
+
}
|
|
235
|
+
|
|
236
|
+
declare const createBaseMapHandler: (viewer: Cesium.Viewer) => IBaseMapHandler;
|
|
237
|
+
type BaseMapKey = 'none' | 'tdt-image' | 'tdt-vec' | 'tdt-image-2000' | 'tdt-vec-2000' | 'gao-de' | 'baidu' | 'osm' | 'google' | 'bing' | 'cesium';
|
|
238
|
+
interface IBaseMapOptions {
|
|
239
|
+
url?: string;
|
|
240
|
+
token?: string;
|
|
241
|
+
label?: boolean;
|
|
242
|
+
/**
|
|
243
|
+
* 图层z-index
|
|
244
|
+
* 默认0
|
|
245
|
+
*/
|
|
246
|
+
zIndex?: number;
|
|
247
|
+
}
|
|
248
|
+
interface IBaseMapHandler {
|
|
249
|
+
set: (mapKey: BaseMapKey, options?: IBaseMapOptions) => any;
|
|
250
|
+
get: () => IImageryLayerLoader | undefined;
|
|
251
|
+
remove: () => void;
|
|
252
|
+
flyTo: () => void;
|
|
253
|
+
setOpacity: (opacity: number) => void;
|
|
254
|
+
}
|
|
255
|
+
|
|
256
|
+
/**
|
|
257
|
+
* @module 加载OpenStreetMap图层
|
|
258
|
+
*/
|
|
259
|
+
|
|
260
|
+
/**
|
|
261
|
+
*
|
|
262
|
+
* @param option
|
|
263
|
+
* @param option.viewer
|
|
264
|
+
* @param option.token
|
|
265
|
+
* @param option.crs 投影系,默认EPSG:3857
|
|
266
|
+
* - EPSG:4326 经纬度投影
|
|
267
|
+
* - EPSG:3857 墨卡托投影
|
|
268
|
+
* @param option.zIndex
|
|
269
|
+
* - 默认为0
|
|
270
|
+
* @param option.minimumLevel 最小层级,默认0
|
|
271
|
+
* @param option.maximumLevel 最大层级,默认18
|
|
272
|
+
*/
|
|
273
|
+
declare const loadOsmLayer: (option: ILoadOsmOptions) => IImageryLayerLoader;
|
|
274
|
+
interface ILoadOsmOptions {
|
|
275
|
+
viewer: Cesium.Viewer;
|
|
276
|
+
type: 'hot' | 'osm';
|
|
277
|
+
crs?: string;
|
|
278
|
+
zIndex?: number;
|
|
279
|
+
minimumLevel?: number;
|
|
280
|
+
maximumLevel?: number;
|
|
281
|
+
}
|
|
282
|
+
|
|
283
|
+
/**
|
|
284
|
+
* @module 加载cesium assets 图层
|
|
285
|
+
*/
|
|
286
|
+
|
|
287
|
+
/**
|
|
288
|
+
* 加载cesium资产
|
|
289
|
+
* @param option
|
|
290
|
+
* @param option.viewer
|
|
291
|
+
* @param option.id 资产id 默认为3
|
|
292
|
+
*/
|
|
293
|
+
declare const loadCesiumAssets: (option: ILoadCesiumAssetsOptions) => Promise<IImageryLayerLoader>;
|
|
294
|
+
interface ILoadCesiumAssetsOptions {
|
|
295
|
+
viewer: Cesium.Viewer;
|
|
296
|
+
/**
|
|
297
|
+
* 资产id 默认为3
|
|
298
|
+
*/
|
|
299
|
+
id?: number;
|
|
300
|
+
/**
|
|
301
|
+
* 图层z-index
|
|
302
|
+
*/
|
|
303
|
+
zIndex?: number;
|
|
304
|
+
}
|
|
305
|
+
|
|
306
|
+
export { TransformsFor3dtiles, createBaseMapHandler, load3dTiles, load3dTilesFromUrl, loadCesiumAssets, loadI3s, loadModel, loadOsmLayer, loadTerrain, loadTerrainFromCesium, loadTianDiTu, loadWmsLayer, loadWmtsLayer, loads3m, removeTerrain, setHeightOffsetFor3dTiles, setImageLayerTheme };
|
|
307
|
+
export type { I3dTilesLoader, IBaseMapHandler, IBaseMapOptions, IImageryLayerLoader, ILayerLoader, ILoadCesiumAssetsOptions, ILoadOsmOptions, ILoadTerrainOptions, ILoadTiandituOptions, ISetImageLayerOptions, IWmsLayerLoaderOptions, IWmtsLayerLoaderOptions };
|
package/dist/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import*as e from"cesium";const r=r=>{const{viewer:t,token:o}=r,a=r.vec?"vec":"img",i=[],n=t.imageryLayers.addImageryProvider(new e.WebMapTileServiceImageryProvider({url:`//t{s}.tianditu.gov.cn/${a}_w/wmts?tk=${o}`,layer:a,style:"default",tileMatrixSetID:"w",format:"tiles",maximumLevel:18,subdomains:["0","1","2","3","4","5","6","7"]}));if(i.push(n),r.label){const r=t.imageryLayers.addImageryProvider(new e.WebMapTileServiceImageryProvider({url:`//t{s}.tianditu.gov.cn/cia_w/wmts?tk=${o}`,layer:"cia",style:"default",tileMatrixSetID:"w",format:"tiles",maximumLevel:18,subdomains:["0","1","2","3","4","5","6","7"]}));i.push(r)}return{layers:i,remove:()=>{i.forEach(e=>{t.imageryLayers.remove(e)})},setOpacity:e=>{i.forEach(r=>{r.alpha=e})}}};function t(r,t){t||(t={}),console.log(t.filterColor);const o=r.imageryLayers.get(0);if(!o)return;o.brightness=t.brightness??.6,o.contrast=t.contrast??1.8,o.gamma=t.gamma??.3,o.hue=t.hue??1,o.saturation=t.saturation||0;const a=r.scene.globe._surfaceShaderSet.baseFragmentShaderSource.sources;for(let r=0;r<a.length;r++){const o="color = czm_saturation(color, textureSaturation);\n#endif\n";let i="color = czm_saturation(color, textureSaturation);\n#endif\n";t.invertColor||(i+="\n color.r = 1.0 - color.r;\n color.g = 1.0 - color.g;\n color.b = 1.0 - color.b;\n "),t.filterColor||(t.filterColor=e.Color.fromCssColorString("rgba(100,138,230,0.5)")),i+=`\n color.r = color.r * ${t.filterColor.red.toFixed(2)};\n color.g = color.g * ${t.filterColor.green.toFixed(2)};\n color.b = color.b * ${t.filterColor.blue.toFixed(2)};\n // color.a = color.a * ${t.filterColor.alpha.toFixed(2)};\n `,a[r]=a[r].replace(o,i)}r.scene.requestRender()}const o={cacheBytes:4294967296,maximumCacheOverflowBytes:5368709120},a=async r=>{const{viewer:t,url:a,options:n}=r,s=await e.Cesium3DTileset.fromUrl(a,{...o,...n});t.scene.primitives.add(s);return{tileset:s,setHeightOffset:e=>{i(s,e)},remove:()=>{t.scene.primitives.remove(s)},flyTo:()=>{t.flyTo(s)}}},i=(r,t)=>{l(r,e.Cartesian3.fromElements(0,0,t,new e.Cartesian3))},n=async e=>{const r=[];function t(e){if(console.log(e),!e.content||!e.content.featuresLength)return;const o=e.content;for(let e=0;e<o.featuresLength;e++)r.push(o.getFeature(e));e.children?.forEach(t)}return new Promise(o=>{e.allTilesLoaded.addEventListener(()=>{t(e.root),o(r)})})},s=e=>{const r=[];function t(e){r.push(e),e.children?.forEach(t)}return new Promise(o=>{e.allTilesLoaded.addEventListener(()=>{t(e.root),o(r)})})},l=(r,t)=>{if(t.equals(e.Cartesian3.ZERO))return;const o=r.boundingSphere.center,a=e.Transforms.eastNorthUpToFixedFrame(o),i=e.Matrix4.multiplyByPoint(a,t,new e.Cartesian3),n=e.Cartesian3.subtract(i,o,new e.Cartesian3),s=e.Matrix4.fromTranslation(n);r.modelMatrix=e.Matrix4.multiply(s,r.modelMatrix,new e.Matrix4)},c={translate:l,scale:(r,t)=>{if(t.equals(e.Cartesian3.ZERO)||t.equals(e.Cartesian3.ONE))return;const o=r.boundingSphere.center,a=e.Transforms.eastNorthUpToFixedFrame(o),i=e.Matrix4.inverse(a,new e.Matrix4),n=e.Matrix4.fromScale(t),s=e.Matrix4.multiply(n,i,new e.Matrix4),l=e.Matrix4.multiply(a,s,new e.Matrix4);r.modelMatrix=e.Matrix4.multiply(l,r.modelMatrix,new e.Matrix4)},rotate:(r,t)=>{const{x:o,y:a,z:i}=t,n=r.boundingSphere.center,s=e.Transforms.eastNorthUpToFixedFrame(n),l=e.Matrix4.inverse(s,new e.Matrix4),c=e.Matrix4.clone(e.Matrix4.IDENTITY);if(0!==o){const r=e.Matrix4.fromRotation(e.Matrix3.fromRotationX(e.Math.toRadians(o)));e.Matrix4.multiply(r,c,c)}if(0!==a){const r=e.Matrix4.fromRotation(e.Matrix3.fromRotationY(e.Math.toRadians(a)));e.Matrix4.multiply(r,c,c)}if(0!==i){const r=e.Matrix4.fromRotation(e.Matrix3.fromRotationZ(e.Math.toRadians(i)));e.Matrix4.multiply(r,c,c)}const m=e.Matrix4.multiply(c,l,new e.Matrix4),u=e.Matrix4.multiply(s,m,new e.Matrix4);r.modelMatrix=e.Matrix4.multiply(u,r.modelMatrix,new e.Matrix4)}},m=async r=>{const{viewer:t,url:o}=r,a=await e.CesiumTerrainProvider.fromUrl(o,{requestWaterMask:!0,requestVertexNormals:!0});t.scene.terrainProvider=a;return{terrainProvider:a,remove:()=>{t.scene.terrainProvider=new e.EllipsoidTerrainProvider}}},u=r=>{r.scene.terrainProvider=new e.EllipsoidTerrainProvider},d=async()=>await e.CesiumTerrainProvider.fromIonAssetId(1,{requestWaterMask:!0,requestVertexNormals:!0}),f=()=>{},x=()=>{},M=async r=>{const{viewer:t,url:o,options:a}=r,n=await e.I3SDataProvider.fromUrl(o,a);t.scene.primitives.add(n);return{i3sProvider:n,setHeightOffset:e=>{n.layers.forEach(r=>{const t=r.tileset;t&&i(t,e)})},remove:()=>{t.scene.primitives.remove(n)},flyTo:r=>{const o=e.Rectangle.center(n.extent);o.height=r;let a=n.data;e.defined(a.layers)&&a.layers.length>0&&(a=a.layers[0]),e.defined(a.fullExtent)&&e.defined(a.fullExtent.zmax)&&(o.height+=a.fullExtent.zmax);const i=e.Ellipsoid.WGS84.cartographicToCartesian(o);t.camera.flyTo({destination:i,orientation:{}})}}};export{c as TransformsFor3dtiles,n as getAllFeaturesFrom3dTiles,s as getAllTilesFrom3dTiles,a as load3dTiles,M as loadI3s,f as loadModel,m as loadTerrain,d as loadTerrainFromCesium,r as loadTianDiTu,x as loads3m,u as removeTerrain,i as setHeightOffsetFor3dTiles,t as setImageLayerTheme};
|
|
1
|
+
import*as e from"cesium";import{destroyAssert as r,getUrlResourceForToken as t,getFeaturesFromTileFeature as o}from"@ino-cesium/common";const a=t=>{const{viewer:o,token:a}=t;a||(t.token="1d109683f4d84198e37a38c442d68311");let s=!1;const l=t.vec?"vec":"img",c=t.vec?"cva":"via",m=[],d=i(t.crs),y=o.imageryLayers.addImageryProvider(new e.WebMapTileServiceImageryProvider({url:`//t{s}.tianditu.gov.cn/${l}_${d}/wmts?tk=${a}`,layer:l,style:"default",tileMatrixSetID:d,format:"tiles",maximumLevel:18,subdomains:["0","1","2","3","4","5","6","7"],tileMatrixLabels:n(t.crs)}));if(m.push(y),t.label){const r=o.imageryLayers.addImageryProvider(new e.WebMapTileServiceImageryProvider({url:`//t{s}.tianditu.gov.cn/${c}_${d}/wmts?tk=${a}`,layer:c,style:"default",tileMatrixSetID:d,format:"tiles",maximumLevel:18,subdomains:["0","1","2","3","4","5","6","7"],tileMatrixLabels:n(t.crs)}));m.push(r)}const u=()=>{r("TianDiTuLoader",s),m.forEach(e=>{o.imageryLayers.remove(e)})};return{layers:m,flyTo:()=>{r("TianDiTuLoader",s),o.flyTo(m[0])},remove:u,setOpacity:e=>{r("TianDiTuLoader",s),m.forEach(r=>{r.alpha=e})},destroy:()=>{r("TianDiTuLoader",s),u(),s=!0},isDestroyed:()=>(r("TianDiTuLoader",s),s)}},i=e=>"EPSG:4326"===e?"w":"c",n=e=>"EPSG:4326"===e?["1","2","3","4","5","6","7","8","9","10","11","12","13","14","15","16","17","18"]:["0","1","2","3","4","5","6","7","8","9","10","11","12","13","14","15","16","17"],s={cacheBytes:1073741824},l=async e=>{const{url:r}=e;return c({...e,url:r})},c=async r=>{const{viewer:a,url:i,options:n,token:l}=r;let c=0,d="",u="",g="rgba(45,140,240,0.5)",f=[];const v={},p=t({url:i,token:l}),w=await e.Cesium3DTileset.fromUrl(p,{...s,...n});a.scene.primitives.add(w);const h={};w.allTilesLoaded.addEventListener(()=>{w.root.children.forEach(e=>{e._tileId=numbersId();const r=[];if(e.content){h[e._tileId]=[];const t=e.content.featuresLength;Array.from({length:t}).forEach((t,a)=>{const i=e.content.getFeature(a),n=o(i);r.push(n),v[n.id]=i})}h[e._tileId]=r}),r.allTilesLoaded&&r.allTilesLoaded(h,v)});const x=()=>{const r=e.Color.fromCssColorString(g);w.style=new e.Cesium3DTileStyle({renderState:{backFaceCulling:!1},color:{evaluateColor(t,o){if(!t)return e.Color.clone(e.Color.WHITE,o);const a=t.getProperty("id");return u?a===u?e.Color.clone(r,o):e.Color.clone(e.Color.WHITE.withAlpha(.2),o):a===d?e.Color.clone(r,o):e.Color.clone(e.Color.WHITE,o)}},show:{evaluate(e){if(!e)return!0;const r=e.getProperty("id");return!f.includes(r)}}})};x();return{tileset:w,heightOffset:c,remove:()=>{c=0,a.scene.primitives.remove(w)},flyTo:()=>{w._newBoundingSphere?a.camera.flyToBoundingSphere(w._newBoundingSphere):a.flyTo(w)},flyToByFeatureId:async e=>{if(!e)return;const r=v[e].content.tile;return new Promise(e=>{a.camera.flyToBoundingSphere(r.boundingSphere,{complete:()=>{e(!0)}})})},twinkingByTileId:e=>e,twinkingByFeatureId:e=>{if(!e)return u="",void x();u=e,x(),setTimeout(()=>{u="",x(),setTimeout(()=>{u=e,x()},500)},500)},setHeightOffset:e=>{c=e,m(w,e)},setOpacity:r=>{w.style=new e.Cesium3DTileStyle({color:{conditions:[["true",`color('white', ${r})`]]}})},setScale:r=>{y(w,new e.Cartesian3(r,r,r))},setSplitDirection:e=>{w.splitDirection=e},setSelectByFeatureIds:e=>{u="",d=e||"",x()},setSelectColor:e=>{g=e},setSelectByTileIds:e=>e,setBrightness:e=>e,setVisible:e=>{w.show=e,f.length=0},setVisibleByFeatureIds:(e,r)=>{let t=[];r?t=f.filter(r=>!e.includes(r)):(t.push(...f),t.push(...e)),f=t,x()},getFeatures:()=>Object.values(v).map(e=>o(e)),getFeaturesGroupByTileId:()=>h,setVisibleByTileId:(e,r)=>{const t=[];e.forEach(e=>{const o=Object.values(h[e]).map(e=>e.id);r?t.push(...f.filter(e=>!o.includes(e))):t.push(...o)}),r||t.push(...f),f=t,x()},gpuUsageMonitor:e=>{const r=setInterval(()=>{const r=w.totalMemoryUsageInBytes;e((r/1024/1024).toFixed(2))},1e3);return{close:()=>{r&&clearInterval(r)}}},setGpuUsageSize:e=>{w.cacheBytes=1024*e*1024},getGpuUsageSize:()=>w.cacheBytes/1024/1024}},m=(r,t)=>{d(r,e.Cartesian3.fromElements(0,0,t,new e.Cartesian3))},d=(r,t)=>{if(t.equals(e.Cartesian3.ZERO))return;const o=r.boundingSphere.center,a=e.Transforms.eastNorthUpToFixedFrame(o),i=e.Matrix4.multiplyByPoint(a,t,new e.Cartesian3),n=e.Cartesian3.subtract(i,o,new e.Cartesian3),s=e.Matrix4.fromTranslation(n);r.modelMatrix=e.Matrix4.multiply(s,r.modelMatrix,new e.Matrix4)},y=(r,t)=>{if(t.equals(e.Cartesian3.ZERO)||t.equals(e.Cartesian3.ONE))return;const o=r.boundingSphere.center,a=e.Transforms.eastNorthUpToFixedFrame(o),i=e.Matrix4.inverse(a,new e.Matrix4),n=e.Matrix4.fromScale(t),s=e.Matrix4.multiply(n,i,new e.Matrix4),l=e.Matrix4.multiply(a,s,new e.Matrix4);r.modelMatrix=e.Matrix4.multiply(l,r.modelMatrix,new e.Matrix4)},u={translate:d,scale:y,rotate:(r,t)=>{const{x:o,y:a,z:i}=t,n=r.boundingSphere.center,s=e.Transforms.eastNorthUpToFixedFrame(n),l=e.Matrix4.inverse(s,new e.Matrix4),c=e.Matrix4.clone(e.Matrix4.IDENTITY);if(0!==o){const r=e.Matrix4.fromRotation(e.Matrix3.fromRotationX(e.Math.toRadians(o)));e.Matrix4.multiply(r,c,c)}if(0!==a){const r=e.Matrix4.fromRotation(e.Matrix3.fromRotationY(e.Math.toRadians(a)));e.Matrix4.multiply(r,c,c)}if(0!==i){const r=e.Matrix4.fromRotation(e.Matrix3.fromRotationZ(e.Math.toRadians(i)));e.Matrix4.multiply(r,c,c)}const m=e.Matrix4.multiply(c,l,new e.Matrix4),d=e.Matrix4.multiply(s,m,new e.Matrix4);r.modelMatrix=e.Matrix4.multiply(d,r.modelMatrix,new e.Matrix4)}},g=async r=>{const{viewer:t,url:o}=r,a=await e.CesiumTerrainProvider.fromUrl(o,{requestWaterMask:!0,requestVertexNormals:!0});t.scene.terrainProvider=a;return{terrainProvider:a,remove:()=>{t.scene.terrainProvider=new e.EllipsoidTerrainProvider}}},f=r=>{r.scene.terrainProvider=new e.EllipsoidTerrainProvider},v=async()=>await e.CesiumTerrainProvider.fromIonAssetId(1,{requestWaterMask:!0,requestVertexNormals:!0}),p=()=>{},w=()=>{},h=async r=>{const{viewer:t,url:o,options:a}=r,i=await e.I3SDataProvider.fromUrl(o,a);t.scene.primitives.add(i);return{i3sProvider:i,setHeightOffset:e=>{i.layers.forEach(r=>{const t=r.tileset;t&&m(t,e)})},remove:()=>{t.scene.primitives.remove(i)},flyTo:r=>{const o=e.Rectangle.center(i.extent);o.height=r;let a=i.data;e.defined(a.layers)&&a.layers.length>0&&(a=a.layers[0]),e.defined(a.fullExtent)&&e.defined(a.fullExtent.zmax)&&(o.height+=a.fullExtent.zmax);const n=e.Ellipsoid.WGS84.cartographicToCartesian(o);t.camera.flyTo({destination:n,orientation:{}})}}};function x(r,t){t||(t={});const o=r.imageryLayers.get(0);if(!o)return;o.brightness=t.brightness??.6,o.contrast=t.contrast??1.8,o.gamma=t.gamma??.3,o.hue=t.hue??1,o.saturation=t.saturation||0;const a=r.scene.globe._surfaceShaderSet.baseFragmentShaderSource.sources;for(let r=0;r<a.length;r++){const o="color = czm_saturation(color, textureSaturation);\n#endif\n";let i="color = czm_saturation(color, textureSaturation);\n#endif\n";t.invertColor||(i+="\n color.r = 1.0 - color.r;\n color.g = 1.0 - color.g;\n color.b = 1.0 - color.b;\n "),t.filterColor||(t.filterColor=e.Color.fromCssColorString("rgba(100,138,230,0.5)")),i+=`\n color.r = color.r * ${t.filterColor.red.toFixed(2)};\n color.g = color.g * ${t.filterColor.green.toFixed(2)};\n color.b = color.b * ${t.filterColor.blue.toFixed(2)};\n // color.a = color.a * ${t.filterColor.alpha.toFixed(2)};\n `,a[r]=a[r].replace(o,i)}r.scene.requestRender()}const T=r=>{const t="EPSG:3857",o={"EPSG:4326":new e.GeographicTilingScheme,"EPSG:4490":new e.GeographicTilingScheme,"EPSG:3857":new e.WebMercatorTilingScheme};return o[r||t]||o[t]},L=t=>{let o,a,i=!1;if(t.zLevelOffset||(t.zLevelOffset=0),t.url.includes("{z}")){const r=function(r){const t=T(r.crs),o=r.url.replace("{z}","{levelZ}"),a=new e.UrlTemplateImageryProvider({...r,url:o,tilingScheme:t,customTags:{levelZ:(e,t,o,a)=>a+(r.zLevelOffset||0)}}),i=new e.ImageryLayer(a);return r.viewer.imageryLayers.add(i,r.zIndex),{imageryProvider:a,imageryLayer:i}}(t);o=r.imageryProvider,a=r.imageryLayer}else{const e=M(t);o=e.imageryProvider,a=e.imageryLayer}if(!o)throw new Error("wmts图层加载失败");const n=()=>{r("wmtsLoader",i),t.viewer.imageryLayers.remove(a)};return{layers:[a],remove:n,destroy:()=>{r("wmtsLoader",i),i=!0,n()},isDestroyed:()=>(r("wmtsLoader",i),i),flyTo:()=>{r("wmtsLoader",i),setTimeout(()=>{t.viewer.camera.flyTo({destination:o.rectangle})},1e3)},setOpacity:e=>{r("wmtsLoader",i),a.alpha=e}}};const M=r=>{const t=T(r.crs),o=r.zLevelOffset||0,a=r.kvpInfo?.tileMatrixLabels||I(o,r.maximumLevel||18),i=new e.WebMapTileServiceImageryProvider({tileMatrixLabels:a,...r,...r.kvpInfo,tilingScheme:t}),n=new e.ImageryLayer(i);return r.viewer.imageryLayers.add(n,r.zIndex),{imageryProvider:i,imageryLayer:n}},I=(e,r)=>Array.from({length:r-e},(r,t)=>t+e).map(String),S=t=>{let o=!1;const a=T(t.crs);t.layerName||(t.layerName=t.url.split("?")[0].split("/").pop()||"",t.url=t.url.replace(`/${t.layerName}`,""));const i=new e.WebMapServiceImageryProvider({layers:t.layerName,parameters:{format:"image/png",transparent:!0},...t,tilingScheme:a}),n=new e.ImageryLayer(i);if(t.viewer.imageryLayers.add(n,t.zIndex),!i)throw new Error("wms图层加载失败");const s=()=>{r("wmsLayer",o),t.viewer.imageryLayers.remove(n)};return{layers:[n],remove:s,destroy:()=>{r("loadWmsLayer",o),o=!0,s()},isDestroyed:()=>(r("wmsLayer",o),o),flyTo:()=>{r("wmsLayer",o),setTimeout(()=>{t.viewer.camera.flyTo({destination:i.rectangle})},1e3)},setOpacity:e=>{r("wmsLayer",o),n.alpha=e}}},b=async t=>{const{viewer:o,id:a}=t;let i=!1;const n=[];a||(t.id=3);const s=o.imageryLayers.addImageryProvider(await e.IonImageryProvider.fromAssetId(a),t.zIndex);n.push(s);const l=()=>{r("TianDiTuLoader",i),n.forEach(e=>{o.imageryLayers.remove(e)})};return{layers:n,flyTo:()=>{r("TianDiTuLoader",i),o.flyTo(n[0])},remove:l,setOpacity:e=>{r("TianDiTuLoader",i),n.forEach(r=>{r.alpha=e})},destroy:()=>{r("TianDiTuLoader",i),l(),i=!0},isDestroyed:()=>(r("TianDiTuLoader",i),i)}},C=e=>{let r,t=0;const o=()=>{r&&(r.remove(),r=void 0)},i={none:()=>{r&&r?.remove()},"tdt-image":(e,r)=>a({viewer:e,token:r.token,label:r.label}),"tdt-vec":(e,r)=>a({viewer:e,token:r.token,label:r.label,vec:!0}),"tdt-image-2000":(e,r)=>a({viewer:e,token:r.token,label:r.label,crs:"EPSG:4326"}),"tdt-vec-2000":(e,r)=>a({viewer:e,token:r.token,label:r.label,vec:!0,crs:"EPSG:4326"}),"gao-de":(e,r)=>({viewer:e,options:r}),baidu:(e,r)=>({viewer:e,options:r}),osm:(e,r)=>({viewer:e,options:r}),google:(e,r)=>({viewer:e,options:r}),bing:(e,r)=>({viewer:e,options:r}),cesium:(e,r)=>b({viewer:e,id:r.url,zIndex:t})};return{set:(a,n)=>{if(t=n?.zIndex||0,!i[a])throw new Error(`未定义的底图类型:${a}`);return o(),n||(n={token:"",url:"",label:!1}),r=i[a](e,n),r},get:()=>r,setOpacity:e=>{r&&r.setOpacity(e)},remove:o,flyTo:()=>{r&&r.flyTo()}}},P=t=>{const{viewer:o}=t;let a=!1;const i=[],n=E[t.type]||E.osm,s=new e.UrlTemplateImageryProvider({url:n,tilingScheme:T(t.crs),minimumLevel:t.minimumLevel||0,maximumLevel:t.maximumLevel||18}),l=new e.ImageryLayer(s);o.imageryLayers.addImageryProvider(s,t.zIndex||0),i.push(l);const c=()=>{r("loadOsmLayer",a),i.forEach(e=>{o.imageryLayers.remove(e)})};return{layers:i,flyTo:()=>{r("loadOsmLayer",a),o.flyTo(i[0])},remove:c,setOpacity:e=>{r("loadOsmLayer",a),i.forEach(r=>{r.alpha=e})},destroy:()=>{r("loadOsmLayer",a),c(),a=!0},isDestroyed:()=>(r("loadOsmLayer",a),a)}},E={hot:"//{s}.tile.openstreetmap.fr/hot/{z}/{x}/{y}.png",osm:"//{s}.tile.openstreetmap.org/{z}/{x}/{y}.png",cycle:"//{s}.tile.openstreetmap.org/cycle/{z}/{x}/{y}.png"};export{u as TransformsFor3dtiles,C as createBaseMapHandler,c as load3dTiles,l as load3dTilesFromUrl,b as loadCesiumAssets,h as loadI3s,p as loadModel,P as loadOsmLayer,g as loadTerrain,v as loadTerrainFromCesium,a as loadTianDiTu,S as loadWmsLayer,L as loadWmtsLayer,w as loads3m,f as removeTerrain,m as setHeightOffsetFor3dTiles,x as setImageLayerTheme};
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@ino-cesium/layers",
|
|
3
3
|
"type": "module",
|
|
4
|
-
"version": "0.0.26-beta.
|
|
4
|
+
"version": "0.0.26-beta.5",
|
|
5
5
|
"author": "koino",
|
|
6
6
|
"keywords": [
|
|
7
7
|
"cesium",
|
|
@@ -24,11 +24,12 @@
|
|
|
24
24
|
"dist/*.js",
|
|
25
25
|
"README.MD"
|
|
26
26
|
],
|
|
27
|
+
"main": "./dist/index.js",
|
|
27
28
|
"peerDependencies": {
|
|
28
29
|
"cesium": "1.134.0"
|
|
29
30
|
},
|
|
30
31
|
"dependencies": {
|
|
31
|
-
"@ino-cesium/common": "0.0.26-beta.
|
|
32
|
+
"@ino-cesium/common": "0.0.26-beta.5"
|
|
32
33
|
},
|
|
33
34
|
"devDependencies": {},
|
|
34
35
|
"scripts": {
|