@ino-cesium/layers 0.0.26-beta.6 → 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/README.MD CHANGED
@@ -1,3 +1,3 @@
1
- # ino-cesium 图层加载
2
-
3
- 图层加载
1
+ # ino-cesium 图层加载
2
+
3
+ 图层加载
package/dist/index.js CHANGED
@@ -1 +1 @@
1
- import*as e from"cesium";import{destroyAssert as r,getUrlResourceForToken as t,getFeaturesFromTileFeature as a}from"@ino-cesium/common";import o from"gsap";const i=(e,r,t=!1)=>{t?r.forEach(t=>{o.to(t,{alpha:0,duration:.5,onComplete:()=>{r.forEach(r=>{e.imageryLayers.remove(r)})}})}):r.forEach(r=>{e.imageryLayers.remove(r)})},n=e=>{e.forEach(e=>{e.alpha=0,o.to(e,{alpha:1,duration:.5})})},s=t=>{t.token||(t.token="1d109683f4d84198e37a38c442d68311");const{viewer:a,token:o}=t;let s=!1;const d=t.vec?"vec":"img",y=t.vec?"cva":"cia",u=[],g=l(t.crs),f=a.imageryLayers.addImageryProvider(new e.WebMapTileServiceImageryProvider({url:`//t{s}.tianditu.gov.cn/${d}_${g}/wmts?tk=${o}`,layer:d,style:"default",tileMatrixSetID:g,format:"tiles",maximumLevel:18,subdomains:["0","1","2","3","4","5","6","7"],tileMatrixLabels:c(t.crs),tilingScheme:m(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:18,subdomains:["0","1","2","3","4","5","6","7"],tileMatrixLabels:c(t.crs),tilingScheme:m(t.crs)}));u.push(r)}t.animate&&n(u);const p=()=>{r("TianDiTuLoader",s),i(a,u,t.animate)};return{layers:u,flyTo:()=>{r("TianDiTuLoader",s),a.flyTo(u[0])},remove:p,setOpacity:e=>{r("TianDiTuLoader",s),u.forEach(r=>{r.opacity=e})},destroy:()=>{r("TianDiTuLoader",s),p(),s=!0},isDestroyed:()=>(r("TianDiTuLoader",s),s)}},l=e=>"EPSG:3857"===e?"w":"c",c=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"],m=r=>"EPSG:3857"===r?new e.WebMercatorTilingScheme:new e.GeographicTilingScheme,d={cacheBytes:1073741824},y=async e=>{const{url:r}=e;return u({...e,url:r})},u=async r=>{const{viewer:o,url:i,options:n,token:s}=r;let l=0,c="",m="",y="rgba(45,140,240,0.5)",u=[];const f={},v=t({url:i,token:s}),h=await e.Cesium3DTileset.fromUrl(v,{...d,...n});o.scene.primitives.add(h);const w={};h.allTilesLoaded.addEventListener(()=>{h.root.children.forEach(e=>{e._tileId=numbersId();const r=[];if(e.content){w[e._tileId]=[];const t=e.content.featuresLength;Array.from({length:t}).forEach((t,o)=>{const i=e.content.getFeature(o),n=a(i);r.push(n),f[n.id]=i})}w[e._tileId]=r}),r.allTilesLoaded&&r.allTilesLoaded(w,f)});const T=()=>{const r=e.Color.fromCssColorString(y);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 m?o===m?e.Color.clone(r,a):e.Color.clone(e.Color.WHITE.withAlpha(.2),a):o===c?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!u.includes(r)}}})};T();return{tileset:h,heightOffset:l,remove:()=>{l=0,o.scene.primitives.remove(h)},flyTo:()=>{h._newBoundingSphere?o.camera.flyToBoundingSphere(h._newBoundingSphere):o.flyTo(h)},flyToByFeatureId:async e=>{if(!e)return;const r=f[e].content.tile;return new Promise(e=>{o.camera.flyToBoundingSphere(r.boundingSphere,{complete:()=>{e(!0)}})})},twinkingByTileId:e=>e,twinkingByFeatureId:e=>{if(!e)return m="",void T();m=e,T(),setTimeout(()=>{m="",T(),setTimeout(()=>{m=e,T()},500)},500)},setHeightOffset:e=>{l=e,g(h,e)},setOpacity:r=>{h.style=new e.Cesium3DTileStyle({color:{conditions:[["true",`color('white', ${r})`]]}})},setScale:r=>{p(h,new e.Cartesian3(r,r,r))},setSplitDirection:e=>{h.splitDirection=e},setSelectByFeatureIds:e=>{m="",c=e||"",T()},setSelectColor:e=>{y=e},setSelectByTileIds:e=>e,setBrightness:e=>e,setVisible:e=>{h.show=e,u.length=0},setVisibleByFeatureIds:(e,r)=>{let t=[];r?t=u.filter(r=>!e.includes(r)):(t.push(...u),t.push(...e)),u=t,T()},getFeatures:()=>Object.values(f).map(e=>a(e)),getFeaturesGroupByTileId:()=>w,setVisibleByTileId:(e,r)=>{const t=[];e.forEach(e=>{const a=Object.values(w[e]).map(e=>e.id);r?t.push(...u.filter(e=>!a.includes(e))):t.push(...a)}),r||t.push(...u),u=t,T()},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}},g=(r,t)=>{f(r,e.Cartesian3.fromElements(0,0,t,new e.Cartesian3))},f=(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)},p=(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)},v={translate:f,scale:p,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)}},h=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}}},w=r=>{r.scene.terrainProvider=new e.EllipsoidTerrainProvider},T=async()=>await e.CesiumTerrainProvider.fromIonAssetId(1,{requestWaterMask:!0,requestVertexNormals:!0}),x=()=>{},L=()=>{},M=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&&g(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 S(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 I=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]},b=t=>{let a,o,s=!1;if(t.zLevelOffset||(t.zLevelOffset=0),t.url.includes("{z}")){const r=function(r){const t=I(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=C(t);a=e.imageryProvider,o=e.imageryLayer}if(!a)throw new Error("wmts图层加载失败");t.animate&&n([o]);const l=()=>{r("wmtsLoader",s),i(t.viewer,[o],t.animate)};return{layers:[o],remove:l,destroy:()=>{r("wmtsLoader",s),s=!0,l()},isDestroyed:()=>(r("wmtsLoader",s),s),flyTo:()=>{r("wmtsLoader",s),setTimeout(()=>{t.viewer.camera.flyTo({destination:a.rectangle})},1e3)},setOpacity:e=>{r("wmtsLoader",s),o.alpha=e}}};const C=r=>{const t=I(r.crs),a=r.zLevelOffset||0,o=r.kvpInfo?.tileMatrixLabels||E(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}},E=(e,r)=>Array.from({length:r-e},(r,t)=>t+e).map(String),P=t=>{let a=!1;const o=I(t.crs);t.layerName||(t.layerName=t.url.split("?")[0].split("/").pop()||"",t.url=t.url.replace(`/${t.layerName}`,""));const s=new e.WebMapServiceImageryProvider({layers:t.layerName,parameters:{format:"image/png",transparent:!0},...t,tilingScheme:o}),l=new e.ImageryLayer(s);if(t.viewer.imageryLayers.add(l,t.zIndex),!s)throw new Error("wms图层加载失败");t.animate&&n([l]);const c=()=>{r("wmsLayer",a),i(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:s.rectangle})},1e3)},setOpacity:e=>{r("wmsLayer",a),l.alpha=e}}},O=async t=>{const{viewer:a,id:o}=t;let s=!1;const l=[];o||(t.id=3);const c=a.imageryLayers.addImageryProvider(await e.IonImageryProvider.fromAssetId(o),t.zIndex);l.push(c),t.animate&&n(l);const m=()=>{r("TianDiTuLoader",s),i(a,l,t.animate)};return{layers:l,flyTo:()=>{r("TianDiTuLoader",s),a.flyTo(l[0])},remove:m,setOpacity:e=>{r("TianDiTuLoader",s),l.forEach(r=>{r.alpha=e})},destroy:()=>{r("TianDiTuLoader",s),m(),s=!0},isDestroyed:()=>(r("TianDiTuLoader",s),s)}},D=e=>{let r,t=0;const a=()=>{r&&(r.remove?.(),r=void 0)},o={none:()=>{a()},"tdt-image":(e,r)=>s({viewer:e,token:r.token,label:r.label,animate:!0}),"tdt-vec":(e,r)=>s({viewer:e,token:r.token,label:r.label,vec:!0,animate:!0}),"tdt-image-2000":(e,r)=>s({viewer:e,token:r.token,label:r.label,crs:"EPSG:4326",animate:!0}),"tdt-vec-2000":(e,r)=>s({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)=>O({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()}}},k=t=>{const{viewer:a}=t;let o=!1;const i=[],n=z[t.type]||z.osm,s=new e.UrlTemplateImageryProvider({url:n,tilingScheme:I(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)}},z={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{v as TransformsFor3dtiles,D as createBaseMapHandler,u as load3dTiles,y as load3dTilesFromUrl,O as loadCesiumAssets,M as loadI3s,x as loadModel,k as loadOsmLayer,h as loadTerrain,T as loadTerrainFromCesium,s as loadTianDiTu,P as loadWmsLayer,b as loadWmtsLayer,L as loads3m,w as removeTerrain,g as setHeightOffsetFor3dTiles,S 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-beta.6",
4
+ "version": "0.0.26",
5
5
  "author": "koino",
6
6
  "keywords": [
7
7
  "cesium",
@@ -29,7 +29,7 @@
29
29
  "cesium": "1.134.0"
30
30
  },
31
31
  "dependencies": {
32
- "@ino-cesium/common": "0.0.26-beta.6"
32
+ "@ino-cesium/common": "0.0.26"
33
33
  },
34
34
  "devDependencies": {
35
35
  "gsap": "^3.12.5"