@ino-cesium/layers 0.0.26-beta.2 → 0.0.26-beta.4
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 +75 -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,16 @@ 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
|
+
export { TransformsFor3dtiles, load3dTiles, load3dTilesFromUrl, loadI3s, loadModel, loadTerrain, loadTerrainFromCesium, loadTianDiTu, loads3m, removeTerrain, setHeightOffsetFor3dTiles, setImageLayerTheme };
|
|
150
|
+
export type { I3dTilesLoader, IImageryLayerLoader, ILayerLoader, ILoadTerrainOptions, ILoadTiandituOptions, ISetImageLayerOptions };
|
package/dist/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import*as e from"cesium";const
|
|
1
|
+
import*as e from"cesium";import{destroyAssert as t,getUrlResourceForToken as r,getFeaturesFromTileFeature as o}from"@ino-cesium/common";const i=r=>{const{viewer:o,token:i}=r;i||(r.token="1d109683f4d84198e37a38c442d68311");let s=!1;const l=r.vec?"vec":"img",c=r.vec?"cva":"via",u=[],d=a(r.crs),m=o.imageryLayers.addImageryProvider(new e.WebMapTileServiceImageryProvider({url:`//t{s}.tianditu.gov.cn/${l}_${d}/wmts?tk=${i}`,layer:l,style:"default",tileMatrixSetID:d,format:"tiles",maximumLevel:18,subdomains:["0","1","2","3","4","5","6","7"],tileMatrixLabels:n(r.crs)}));if(u.push(m),r.label){const t=o.imageryLayers.addImageryProvider(new e.WebMapTileServiceImageryProvider({url:`//t{s}.tianditu.gov.cn/${c}_${d}/wmts?tk=${i}`,layer:c,style:"default",tileMatrixSetID:d,format:"tiles",maximumLevel:18,subdomains:["0","1","2","3","4","5","6","7"],tileMatrixLabels:n(r.crs)}));u.push(t)}const f=()=>{t("TianDiTuLoader",s),u.forEach(e=>{o.imageryLayers.remove(e)})};return{layers:u,flyTo:()=>{t("TianDiTuLoader",s),o.flyTo(u[0])},remove:f,setOpacity:e=>{t("TianDiTuLoader",s),u.forEach(t=>{t.alpha=e})},destroy:()=>{t("TianDiTuLoader",s),f(),s=!0},isDestroyed:()=>(t("TianDiTuLoader",s),s)}},a=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:t}=e;return c({...e,url:t})},c=async t=>{const{viewer:i,url:a,options:n,token:l}=t;let c=0,d="",f="",y="rgba(45,140,240,0.5)",x=[];const g={},p=r({url:a,token:l}),h=await e.Cesium3DTileset.fromUrl(p,{...s,...n});i.scene.primitives.add(h);const v={};h.allTilesLoaded.addEventListener(()=>{h.root.children.forEach(e=>{e._tileId=numbersId();const t=[];if(e.content){v[e._tileId]=[];const r=e.content.featuresLength;Array.from({length:r}).forEach((r,i)=>{const a=e.content.getFeature(i),n=o(a);t.push(n),g[n.id]=a})}v[e._tileId]=t}),t.allTilesLoaded&&t.allTilesLoaded(v,g)});const M=()=>{const t=e.Color.fromCssColorString(y);h.style=new e.Cesium3DTileStyle({renderState:{backFaceCulling:!1},color:{evaluateColor(r,o){if(!r)return e.Color.clone(e.Color.WHITE,o);const i=r.getProperty("id");return f?i===f?e.Color.clone(t,o):e.Color.clone(e.Color.WHITE.withAlpha(.2),o):i===d?e.Color.clone(t,o):e.Color.clone(e.Color.WHITE,o)}},show:{evaluate(e){if(!e)return!0;const t=e.getProperty("id");return!x.includes(t)}}})};M();return{tileset:h,heightOffset:c,remove:()=>{c=0,i.scene.primitives.remove(h)},flyTo:()=>{h._newBoundingSphere?i.camera.flyToBoundingSphere(h._newBoundingSphere):i.flyTo(h)},flyToByFeatureId:async e=>{if(!e)return;const t=g[e].content.tile;return new Promise(e=>{i.camera.flyToBoundingSphere(t.boundingSphere,{complete:()=>{e(!0)}})})},twinkingByTileId:e=>e,twinkingByFeatureId:e=>{if(!e)return f="",void M();f=e,M(),setTimeout(()=>{f="",M(),setTimeout(()=>{f=e,M()},500)},500)},setHeightOffset:e=>{c=e,u(h,e)},setOpacity:t=>{h.style=new e.Cesium3DTileStyle({color:{conditions:[["true",`color('white', ${t})`]]}})},setScale:t=>{m(h,new e.Cartesian3(t,t,t))},setSplitDirection:e=>{h.splitDirection=e},setSelectByFeatureIds:e=>{f="",d=e||"",M()},setSelectColor:e=>{y=e},setSelectByTileIds:e=>e,setBrightness:e=>e,setVisible:e=>{h.show=e,x.length=0},setVisibleByFeatureIds:(e,t)=>{let r=[];t?r=x.filter(t=>!e.includes(t)):(r.push(...x),r.push(...e)),x=r,M()},getFeatures:()=>Object.values(g).map(e=>o(e)),getFeaturesGroupByTileId:()=>v,setVisibleByTileId:(e,t)=>{const r=[];e.forEach(e=>{const o=Object.values(v[e]).map(e=>e.id);t?r.push(...x.filter(e=>!o.includes(e))):r.push(...o)}),t||r.push(...x),x=r,M()},gpuUsageMonitor:e=>{const t=setInterval(()=>{const t=h.totalMemoryUsageInBytes;e((t/1024/1024).toFixed(2))},1e3);return{close:()=>{t&&clearInterval(t)}}},setGpuUsageSize:e=>{h.cacheBytes=1024*e*1024},getGpuUsageSize:()=>h.cacheBytes/1024/1024}},u=(t,r)=>{d(t,e.Cartesian3.fromElements(0,0,r,new e.Cartesian3))},d=(t,r)=>{if(r.equals(e.Cartesian3.ZERO))return;const o=t.boundingSphere.center,i=e.Transforms.eastNorthUpToFixedFrame(o),a=e.Matrix4.multiplyByPoint(i,r,new e.Cartesian3),n=e.Cartesian3.subtract(a,o,new e.Cartesian3),s=e.Matrix4.fromTranslation(n);t.modelMatrix=e.Matrix4.multiply(s,t.modelMatrix,new e.Matrix4)},m=(t,r)=>{if(r.equals(e.Cartesian3.ZERO)||r.equals(e.Cartesian3.ONE))return;const o=t.boundingSphere.center,i=e.Transforms.eastNorthUpToFixedFrame(o),a=e.Matrix4.inverse(i,new e.Matrix4),n=e.Matrix4.fromScale(r),s=e.Matrix4.multiply(n,a,new e.Matrix4),l=e.Matrix4.multiply(i,s,new e.Matrix4);t.modelMatrix=e.Matrix4.multiply(l,t.modelMatrix,new e.Matrix4)},f={translate:d,scale:m,rotate:(t,r)=>{const{x:o,y:i,z:a}=r,n=t.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 t=e.Matrix4.fromRotation(e.Matrix3.fromRotationX(e.Math.toRadians(o)));e.Matrix4.multiply(t,c,c)}if(0!==i){const t=e.Matrix4.fromRotation(e.Matrix3.fromRotationY(e.Math.toRadians(i)));e.Matrix4.multiply(t,c,c)}if(0!==a){const t=e.Matrix4.fromRotation(e.Matrix3.fromRotationZ(e.Math.toRadians(a)));e.Matrix4.multiply(t,c,c)}const u=e.Matrix4.multiply(c,l,new e.Matrix4),d=e.Matrix4.multiply(s,u,new e.Matrix4);t.modelMatrix=e.Matrix4.multiply(d,t.modelMatrix,new e.Matrix4)}},y=async t=>{const{viewer:r,url:o}=t,i=await e.CesiumTerrainProvider.fromUrl(o,{requestWaterMask:!0,requestVertexNormals:!0});r.scene.terrainProvider=i;return{terrainProvider:i,remove:()=>{r.scene.terrainProvider=new e.EllipsoidTerrainProvider}}},x=t=>{t.scene.terrainProvider=new e.EllipsoidTerrainProvider},g=async()=>await e.CesiumTerrainProvider.fromIonAssetId(1,{requestWaterMask:!0,requestVertexNormals:!0}),p=()=>{},h=()=>{},v=async t=>{const{viewer:r,url:o,options:i}=t,a=await e.I3SDataProvider.fromUrl(o,i);r.scene.primitives.add(a);return{i3sProvider:a,setHeightOffset:e=>{a.layers.forEach(t=>{const r=t.tileset;r&&u(r,e)})},remove:()=>{r.scene.primitives.remove(a)},flyTo:t=>{const o=e.Rectangle.center(a.extent);o.height=t;let i=a.data;e.defined(i.layers)&&i.layers.length>0&&(i=i.layers[0]),e.defined(i.fullExtent)&&e.defined(i.fullExtent.zmax)&&(o.height+=i.fullExtent.zmax);const n=e.Ellipsoid.WGS84.cartographicToCartesian(o);r.camera.flyTo({destination:n,orientation:{}})}}};function M(t,r){r||(r={});const o=t.imageryLayers.get(0);if(!o)return;o.brightness=r.brightness??.6,o.contrast=r.contrast??1.8,o.gamma=r.gamma??.3,o.hue=r.hue??1,o.saturation=r.saturation||0;const i=t.scene.globe._surfaceShaderSet.baseFragmentShaderSource.sources;for(let t=0;t<i.length;t++){const o="color = czm_saturation(color, textureSaturation);\n#endif\n";let a="color = czm_saturation(color, textureSaturation);\n#endif\n";r.invertColor||(a+="\n color.r = 1.0 - color.r;\n color.g = 1.0 - color.g;\n color.b = 1.0 - color.b;\n "),r.filterColor||(r.filterColor=e.Color.fromCssColorString("rgba(100,138,230,0.5)")),a+=`\n color.r = color.r * ${r.filterColor.red.toFixed(2)};\n color.g = color.g * ${r.filterColor.green.toFixed(2)};\n color.b = color.b * ${r.filterColor.blue.toFixed(2)};\n // color.a = color.a * ${r.filterColor.alpha.toFixed(2)};\n `,i[t]=i[t].replace(o,a)}t.scene.requestRender()}export{f as TransformsFor3dtiles,c as load3dTiles,l as load3dTilesFromUrl,v as loadI3s,p as loadModel,y as loadTerrain,g as loadTerrainFromCesium,i as loadTianDiTu,h as loads3m,x as removeTerrain,u as setHeightOffsetFor3dTiles,M 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.4",
|
|
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.4"
|
|
32
33
|
},
|
|
33
34
|
"devDependencies": {},
|
|
34
35
|
"scripts": {
|