@ino-cesium/layers 0.0.26-beta.5 → 0.0.26
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/index.d.ts +13 -0
- package/dist/index.js +1 -1
- package/package.json +8 -6
package/dist/index.d.ts
CHANGED
|
@@ -35,6 +35,7 @@ interface ILoadTiandituOptions {
|
|
|
35
35
|
crs?: string;
|
|
36
36
|
label?: boolean;
|
|
37
37
|
zIndex?: number;
|
|
38
|
+
animate?: boolean;
|
|
38
39
|
}
|
|
39
40
|
|
|
40
41
|
declare const load3dTilesFromUrl: (option: ILoad3dtilesOptions) => Promise<I3dTilesLoader>;
|
|
@@ -203,6 +204,10 @@ interface IWmtsLayerLoaderOptions {
|
|
|
203
204
|
*/
|
|
204
205
|
tileMatrixLabels?: string[];
|
|
205
206
|
};
|
|
207
|
+
/**
|
|
208
|
+
* 是否动画
|
|
209
|
+
*/
|
|
210
|
+
animate?: boolean;
|
|
206
211
|
}
|
|
207
212
|
|
|
208
213
|
/**
|
|
@@ -231,6 +236,10 @@ interface IWmsLayerLoaderOptions {
|
|
|
231
236
|
maximumLevel?: number;
|
|
232
237
|
subdomains?: string[];
|
|
233
238
|
parameters?: Record<string, string>;
|
|
239
|
+
/**
|
|
240
|
+
* 是否动画
|
|
241
|
+
*/
|
|
242
|
+
animate?: boolean;
|
|
234
243
|
}
|
|
235
244
|
|
|
236
245
|
declare const createBaseMapHandler: (viewer: Cesium.Viewer) => IBaseMapHandler;
|
|
@@ -301,6 +310,10 @@ interface ILoadCesiumAssetsOptions {
|
|
|
301
310
|
* 图层z-index
|
|
302
311
|
*/
|
|
303
312
|
zIndex?: number;
|
|
313
|
+
/**
|
|
314
|
+
* 是否动画
|
|
315
|
+
*/
|
|
316
|
+
animate?: boolean;
|
|
304
317
|
}
|
|
305
318
|
|
|
306
319
|
export { TransformsFor3dtiles, createBaseMapHandler, load3dTiles, load3dTilesFromUrl, loadCesiumAssets, loadI3s, loadModel, loadOsmLayer, loadTerrain, loadTerrainFromCesium, loadTianDiTu, loadWmsLayer, loadWmtsLayer, loads3m, removeTerrain, setHeightOffsetFor3dTiles, setImageLayerTheme };
|
package/dist/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
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};
|
|
1
|
+
import*as e from"cesium";import{destroyAssert as r,getUrlResourceForToken as t,numberId as a,getFeaturesFromTileFeature as o}from"@ino-cesium/common";import i from"gsap";const n=(e,r,t=!1)=>{t?r.forEach(t=>{i.to(t,{alpha:0,duration:.5,onComplete:()=>{r.forEach(r=>{e.imageryLayers.remove(r)})}})}):r.forEach(r=>{e.imageryLayers.remove(r)})},s=e=>{e.forEach(e=>{e.alpha=0,i.to(e,{alpha:1,duration:.5})})},l=t=>{t.token||(t.token="1d109683f4d84198e37a38c442d68311");const{viewer:a,token:o}=t;let i=!1;const l=t.vec?"vec":"img",y=t.vec?"cva":"cia",u=[],g=c(t.crs),f=a.imageryLayers.addImageryProvider(new e.WebMapTileServiceImageryProvider({url:`//t{s}.tianditu.gov.cn/${l}_${g}/wmts?tk=${o}`,layer:l,style:"default",tileMatrixSetID:g,format:"tiles",maximumLevel:17,subdomains:["0","1","2","3","4","5","6","7"],tileMatrixLabels:m(t.crs),tilingScheme:d(t.crs)}));if(u.push(f),t.label){const r=a.imageryLayers.addImageryProvider(new e.WebMapTileServiceImageryProvider({url:`//t{s}.tianditu.gov.cn/${y}_${g}/wmts?tk=${o}`,layer:y,style:"default",tileMatrixSetID:g,format:"tiles",maximumLevel:17,subdomains:["0","1","2","3","4","5","6","7"],tileMatrixLabels:m(t.crs),tilingScheme:d(t.crs)}));u.push(r)}t.animate&&s(u);const p=()=>{r("TianDiTuLoader",i),n(a,u,t.animate)};return{layers:u,flyTo:()=>{r("TianDiTuLoader",i),a.flyTo(u[0])},remove:p,setOpacity:e=>{r("TianDiTuLoader",i),u.forEach(r=>{r.opacity=e})},destroy:()=>{r("TianDiTuLoader",i),p(),i=!0},isDestroyed:()=>(r("TianDiTuLoader",i),i)}},c=e=>"EPSG:3857"===e?"w":"c",m=e=>"EPSG:3857"===e?["0","1","2","3","4","5","6","7","8","9","10","11","12","13","14","15","16","17"]:["1","2","3","4","5","6","7","8","9","10","11","12","13","14","15","16","17","18"],d=r=>"EPSG:3857"===r?new e.WebMercatorTilingScheme:new e.GeographicTilingScheme,y={cacheBytes:1073741824},u=async e=>{const{url:r}=e;return g({...e,url:r})},g=async r=>{const{viewer:i,url:n,options:s,token:l}=r;let c=0,m="",d="",u="rgba(45,140,240,0.5)",g=[];const p={};t({url:n,token:l});const h=await e.Cesium3DTileset.fromUrl(n,{...y,...s});i.scene.primitives.add(h);const w={};h.allTilesLoaded.addEventListener(()=>{h.root.children.forEach(e=>{e._tileId=a();const r=[];if(e.content){w[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),p[n.id]=i})}w[e._tileId]=r}),r.allTilesLoaded&&r.allTilesLoaded(w,p)});const x=()=>{const r=e.Color.fromCssColorString(u);h.style=new e.Cesium3DTileStyle({renderState:{backFaceCulling:!1},color:{evaluateColor(t,a){if(!t)return e.Color.clone(e.Color.WHITE,a);const o=t.getProperty("id");return d?o===d?e.Color.clone(r,a):e.Color.clone(e.Color.WHITE.withAlpha(.2),a):o===m?e.Color.clone(r,a):e.Color.clone(e.Color.WHITE,a)}},show:{evaluate(e){if(!e)return!0;const r=e.getProperty("id");return!g.includes(r)}}})};x();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 r=p[e].content.tile;return new Promise(e=>{i.camera.flyToBoundingSphere(r.boundingSphere,{complete:()=>{e(!0)}})})},twinkingByTileId:e=>e,twinkingByFeatureId:e=>{if(!e)return d="",void x();d=e,x(),setTimeout(()=>{d="",x(),setTimeout(()=>{d=e,x()},500)},500)},setHeightOffset:e=>{c=e,f(h,e)},setOpacity:r=>{h.style=new e.Cesium3DTileStyle({color:{conditions:[["true",`color('white', ${r})`]]}})},setScale:r=>{v(h,new e.Cartesian3(r,r,r))},setSplitDirection:e=>{h.splitDirection=e},setSelectByFeatureIds:e=>{d="",m=e||"",x()},setSelectColor:e=>{u=e},setSelectByTileIds:e=>e,setBrightness:e=>e,setVisible:e=>{h.show=e,g.length=0},setVisibleByFeatureIds:(e,r)=>{let t=[];r?t=g.filter(r=>!e.includes(r)):(t.push(...g),t.push(...e)),g=t,x()},getFeatures:()=>Object.values(p).map(e=>o(e)),getFeaturesGroupByTileId:()=>w,setVisibleByTileId:(e,r)=>{const t=[];e.forEach(e=>{const a=Object.values(w[e]).map(e=>e.id);r?t.push(...g.filter(e=>!a.includes(e))):t.push(...a)}),r||t.push(...g),g=t,x()},gpuUsageMonitor:e=>{const r=setInterval(()=>{const r=h.totalMemoryUsageInBytes;e((r/1024/1024).toFixed(2))},1e3);return{close:()=>{r&&clearInterval(r)}}},setGpuUsageSize:e=>{h.cacheBytes=1024*e*1024},getGpuUsageSize:()=>h.cacheBytes/1024/1024}},f=(r,t)=>{p(r,e.Cartesian3.fromElements(0,0,t,new e.Cartesian3))},p=(r,t)=>{if(t.equals(e.Cartesian3.ZERO))return;const a=r.boundingSphere.center,o=e.Transforms.eastNorthUpToFixedFrame(a),i=e.Matrix4.multiplyByPoint(o,t,new e.Cartesian3),n=e.Cartesian3.subtract(i,a,new e.Cartesian3),s=e.Matrix4.fromTranslation(n);r.modelMatrix=e.Matrix4.multiply(s,r.modelMatrix,new e.Matrix4)},v=(r,t)=>{if(t.equals(e.Cartesian3.ZERO)||t.equals(e.Cartesian3.ONE))return;const a=r.boundingSphere.center,o=e.Transforms.eastNorthUpToFixedFrame(a),i=e.Matrix4.inverse(o,new e.Matrix4),n=e.Matrix4.fromScale(t),s=e.Matrix4.multiply(n,i,new e.Matrix4),l=e.Matrix4.multiply(o,s,new e.Matrix4);r.modelMatrix=e.Matrix4.multiply(l,r.modelMatrix,new e.Matrix4)},h={translate:p,scale:v,rotate:(r,t)=>{const{x:a,y:o,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!==a){const r=e.Matrix4.fromRotation(e.Matrix3.fromRotationX(e.Math.toRadians(a)));e.Matrix4.multiply(r,c,c)}if(0!==o){const r=e.Matrix4.fromRotation(e.Matrix3.fromRotationY(e.Math.toRadians(o)));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)}},w=async r=>{const{viewer:t,url:a}=r,o=await e.CesiumTerrainProvider.fromUrl(a,{requestWaterMask:!0,requestVertexNormals:!0});t.scene.terrainProvider=o;return{terrainProvider:o,remove:()=>{t.scene.terrainProvider=new e.EllipsoidTerrainProvider}}},x=r=>{r.scene.terrainProvider=new e.EllipsoidTerrainProvider},T=async()=>await e.CesiumTerrainProvider.fromIonAssetId(1,{requestWaterMask:!0,requestVertexNormals:!0}),L=()=>{},M=()=>{},S=async r=>{const{viewer:t,url:a,options:o}=r,i=await e.I3SDataProvider.fromUrl(a,o);t.scene.primitives.add(i);return{i3sProvider:i,setHeightOffset:e=>{i.layers.forEach(r=>{const t=r.tileset;t&&f(t,e)})},remove:()=>{t.scene.primitives.remove(i)},flyTo:r=>{const a=e.Rectangle.center(i.extent);a.height=r;let o=i.data;e.defined(o.layers)&&o.layers.length>0&&(o=o.layers[0]),e.defined(o.fullExtent)&&e.defined(o.fullExtent.zmax)&&(a.height+=o.fullExtent.zmax);const n=e.Ellipsoid.WGS84.cartographicToCartesian(a);t.camera.flyTo({destination:n,orientation:{}})}}};function I(r,t){t||(t={});const a=r.imageryLayers.get(0);if(!a)return;a.brightness=t.brightness??.6,a.contrast=t.contrast??1.8,a.gamma=t.gamma??.3,a.hue=t.hue??1,a.saturation=t.saturation||0;const o=r.scene.globe._surfaceShaderSet.baseFragmentShaderSource.sources;for(let r=0;r<o.length;r++){const a="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 `,o[r]=o[r].replace(a,i)}r.scene.requestRender()}const b=r=>{const t="EPSG:3857",a={"EPSG:4326":new e.GeographicTilingScheme,"EPSG:4490":new e.GeographicTilingScheme,"EPSG:3857":new e.WebMercatorTilingScheme};return a[r||t]||a[t]},C=t=>{let a,o,i=!1;if(t.zLevelOffset||(t.zLevelOffset=0),t.url.includes("{z}")){const r=function(r){const t=b(r.crs),a=r.url.replace("{z}","{levelZ}"),o=new e.UrlTemplateImageryProvider({...r,url:a,tilingScheme:t,customTags:{levelZ:(e,t,a,o)=>o+(r.zLevelOffset||0)}}),i=new e.ImageryLayer(o);return r.viewer.imageryLayers.add(i,r.zIndex),{imageryProvider:o,imageryLayer:i}}(t);a=r.imageryProvider,o=r.imageryLayer}else{const e=E(t);a=e.imageryProvider,o=e.imageryLayer}if(!a)throw new Error("wmts图层加载失败");t.animate&&s([o]);const l=()=>{r("wmtsLoader",i),n(t.viewer,[o],t.animate)};return{layers:[o],remove:l,destroy:()=>{r("wmtsLoader",i),i=!0,l()},isDestroyed:()=>(r("wmtsLoader",i),i),flyTo:()=>{r("wmtsLoader",i),setTimeout(()=>{t.viewer.camera.flyTo({destination:a.rectangle})},1e3)},setOpacity:e=>{r("wmtsLoader",i),o.alpha=e}}};const E=r=>{const t=b(r.crs),a=r.zLevelOffset||0,o=r.kvpInfo?.tileMatrixLabels||P(a,r.maximumLevel||18),i=new e.WebMapTileServiceImageryProvider({tileMatrixLabels:o,...r,...r.kvpInfo,tilingScheme:t}),n=new e.ImageryLayer(i);return r.viewer.imageryLayers.add(n,r.zIndex),{imageryProvider:i,imageryLayer:n}},P=(e,r)=>Array.from({length:r-e},(r,t)=>t+e).map(String),O=t=>{let a=!1;const o=b(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:o}),l=new e.ImageryLayer(i);if(t.viewer.imageryLayers.add(l,t.zIndex),!i)throw new Error("wms图层加载失败");t.animate&&s([l]);const c=()=>{r("wmsLayer",a),n(t.viewer,[l],t.animate)};return{layers:[l],remove:c,destroy:()=>{r("loadWmsLayer",a),a=!0,c()},isDestroyed:()=>(r("wmsLayer",a),a),flyTo:()=>{r("wmsLayer",a),setTimeout(()=>{t.viewer.camera.flyTo({destination:i.rectangle})},1e3)},setOpacity:e=>{r("wmsLayer",a),l.alpha=e}}},k=async t=>{const{viewer:a,id:o}=t;let i=!1;const l=[];o||(t.id=3);const c=a.imageryLayers.addImageryProvider(await e.IonImageryProvider.fromAssetId(o),t.zIndex);l.push(c),t.animate&&s(l);const m=()=>{r("CesiumAssetsLoader",i),n(a,l,t.animate)};return{layers:l,flyTo:()=>{r("CesiumAssetsLoader",i),a.flyTo(l[0])},remove:m,setOpacity:e=>{r("CesiumAssetsLoader",i),l.forEach(r=>{r.alpha=e})},destroy:()=>{r("CesiumAssetsLoader",i),m(),i=!0},isDestroyed:()=>(r("CesiumAssetsLoader",i),i)}},z=e=>{let r,t=0;const a=()=>{r&&(r.remove?.(),r=void 0)},o={none:()=>{a()},"tdt-image":(e,r)=>l({viewer:e,token:r.token,label:r.label,animate:!0}),"tdt-vec":(e,r)=>l({viewer:e,token:r.token,label:r.label,vec:!0,animate:!0}),"tdt-image-2000":(e,r)=>l({viewer:e,token:r.token,label:r.label,crs:"EPSG:4326",animate:!0}),"tdt-vec-2000":(e,r)=>l({viewer:e,token:r.token,label:r.label,vec:!0,crs:"EPSG:4326",animate:!0}),"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)=>k({viewer:e,id:Number(r.url||3),zIndex:t})};return{set:(i,n)=>{if(t=n?.zIndex||0,!o[i])throw new Error(`未定义的底图类型:${i}`);a(),n||(n={token:"",url:"",label:!1}),r=o[i](e,n),r instanceof Promise&&r.then(e=>{r=e})},get:()=>r,setOpacity:e=>{r&&r.setOpacity(e)},remove:a,flyTo:()=>{r&&r.flyTo()}}},F=t=>{const{viewer:a}=t;let o=!1;const i=[],n=D[t.type]||D.osm,s=new e.UrlTemplateImageryProvider({url:n,tilingScheme:b(t.crs),minimumLevel:t.minimumLevel||0,maximumLevel:t.maximumLevel||18}),l=new e.ImageryLayer(s);a.imageryLayers.addImageryProvider(s,t.zIndex||0),i.push(l);const c=()=>{r("loadOsmLayer",o),i.forEach(e=>{a.imageryLayers.remove(e)})};return{layers:i,flyTo:()=>{r("loadOsmLayer",o),a.flyTo(i[0])},remove:c,setOpacity:e=>{r("loadOsmLayer",o),i.forEach(r=>{r.alpha=e})},destroy:()=>{r("loadOsmLayer",o),c(),o=!0},isDestroyed:()=>(r("loadOsmLayer",o),o)}},D={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{h as TransformsFor3dtiles,z as createBaseMapHandler,g as load3dTiles,u as load3dTilesFromUrl,k as loadCesiumAssets,S as loadI3s,L as loadModel,F as loadOsmLayer,w as loadTerrain,T as loadTerrainFromCesium,l as loadTianDiTu,O as loadWmsLayer,C as loadWmtsLayer,M as loads3m,x as removeTerrain,f as setHeightOffsetFor3dTiles,I 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
|
|
4
|
+
"version": "0.0.26",
|
|
5
5
|
"author": "koino",
|
|
6
6
|
"keywords": [
|
|
7
7
|
"cesium",
|
|
@@ -11,6 +11,7 @@
|
|
|
11
11
|
"exports": {
|
|
12
12
|
".": "./dist/index.js"
|
|
13
13
|
},
|
|
14
|
+
"main": "./dist/index.js",
|
|
14
15
|
"typesVersions": {
|
|
15
16
|
"*": {
|
|
16
17
|
"*": [
|
|
@@ -20,18 +21,19 @@
|
|
|
20
21
|
}
|
|
21
22
|
},
|
|
22
23
|
"files": [
|
|
24
|
+
"README.MD",
|
|
23
25
|
"dist/*.d.ts",
|
|
24
|
-
"dist/*.js"
|
|
25
|
-
"README.MD"
|
|
26
|
+
"dist/*.js"
|
|
26
27
|
],
|
|
27
|
-
"main": "./dist/index.js",
|
|
28
28
|
"peerDependencies": {
|
|
29
29
|
"cesium": "1.134.0"
|
|
30
30
|
},
|
|
31
31
|
"dependencies": {
|
|
32
|
-
"@ino-cesium/common": "0.0.26
|
|
32
|
+
"@ino-cesium/common": "0.0.26"
|
|
33
|
+
},
|
|
34
|
+
"devDependencies": {
|
|
35
|
+
"gsap": "^3.12.5"
|
|
33
36
|
},
|
|
34
|
-
"devDependencies": {},
|
|
35
37
|
"scripts": {
|
|
36
38
|
"build": "rimraf dist && rollup -c",
|
|
37
39
|
"clean": "rimraf dist",
|