UNPKG

@v2x-three/cesium

Version:

V2X Cesium 核心库 - 基于Cesium的高性能地理可视化和车辆动画系统

3 lines (2 loc) 20 kB
"use strict";function t(t){var e=Object.create(null);return t&&Object.keys(t).forEach(function(i){if("default"!==i){var n=Object.getOwnPropertyDescriptor(t,i);Object.defineProperty(e,i,n.get?n:{enumerable:!0,get:function(){return t[i]}})}}),e.default=t,Object.freeze(e)}var e=t(require("cesium"));class i{constructor(t){this.url=t,this.readyState=WebSocket.CONNECTING,this.onopen=null,this.onmessage=null,this.onclose=null,this.onerror=null,setTimeout(()=>{this.readyState=WebSocket.OPEN,this.onopen&&this.onopen(),this.startSendingMockData()},1e3)}startSendingMockData(){this.interval=setInterval(()=>{if(this.readyState===WebSocket.OPEN&&this.onmessage){const t=this.generateMockRSMData();this.onmessage({data:JSON.stringify(t)})}},100)}generateMockRSMData(){const t=Date.now(),e=[],i=Math.floor(3*Math.random())+3;for(let n=0;n<i;n++){const i=102.98946,s=25.118314,a=.002;e.push({ptcId:10+n,ptcType:1,sourceType:7,ptcTimestamp:t,longitude:i+(Math.random()-.5)*a,latitude:s+(Math.random()-.5)*a,elevation:5*Math.random(),speed:15*Math.random()+5,heading:360*Math.random(),width:180+40*Math.random(),length:400+100*Math.random(),height:150+30*Math.random(),vehicleClass:1,fuelType:Math.floor(5*Math.random()),transmission:Math.floor(4*Math.random()),lonAccel:4*(Math.random()-.5),latAccel:4*(Math.random()-.5),vertAccel:2*(Math.random()-.5),yawRate:10*(Math.random()-.5),posConfidence:Math.floor(16*Math.random()),spdConfidence:Math.floor(8*Math.random()),headConfidence:Math.floor(8*Math.random())})}const n=Math.floor(2*Math.random())+1;for(let i=0;i<n;i++){const n=102.98946,s=25.118314,a=.001;e.push({ptcId:100+i,ptcType:3,sourceType:7,ptcTimestamp:t,longitude:n+(Math.random()-.5)*a,latitude:s+(Math.random()-.5)*a,elevation:2*Math.random(),speed:3*Math.random()+1,heading:360*Math.random(),width:50+20*Math.random(),length:30+10*Math.random(),height:160+30*Math.random(),vehicleClass:0,fuelType:0,transmission:0,lonAccel:0,latAccel:0,vertAccel:0,yawRate:0,posConfidence:Math.floor(16*Math.random()),spdConfidence:Math.floor(8*Math.random()),headConfidence:Math.floor(8*Math.random())})}return{msgType:"rsm",rsuId:"SN02000001",msgCnt:Math.floor(128*Math.random()),timestamp:t,refLongitude:102.98946,refLatitude:25.118314,refElevation:0,uuid:`mock_${t}_${Math.floor(1e3*Math.random())}`,participants:e}}close(){this.readyState=WebSocket.CLOSING,this.interval&&(clearInterval(this.interval),this.interval=null),this.onopen=null,this.onmessage=null,this.onerror=null,this.readyState=WebSocket.CLOSED;const t=this.onclose;if(this.onclose=null,t)try{t()}catch(t){}}send(t){}}i.CONNECTING=0,i.OPEN=1,i.CLOSING=2,i.CLOSED=3;exports.Cesium=e,exports.EntityManager=class{constructor(t){this.viewer=t,this.entities=new Map,this.lastMessageIds=new Set,this.stats={vehicleCount:0,bicycleCount:0,pedestrianCount:0,rsuCount:0,reservedCount:0,totalEntities:0},this.modelUrls={vehicle:"http://58.215.199.197:29002/roadmodal/zjp/su7.glb",bicycle:"http://58.215.199.197:29002/roadmodal/zjp/diandonche.glb",pedestrian:"http://58.215.199.197:29002/roadmodal/zjp/xingren.glb"},this.realWorldDimensions={1:{length:4.97,width:1.96,height:1.45,scale:1,modelHeight:1.45},2:{length:1.8,width:.6,height:1.2,scale:1,modelHeight:1.2},3:{length:.45,width:.3,height:1.7,scale:1,modelHeight:1.7}},this.headingOffset={1:0,2:-90,3:-90}}processParticipants(t,i){const n=Date.now();let s=i;i>n+864e5&&(s=n);const a=e.JulianDate.fromDate(new Date(s)),o=new Set;t.forEach((t,e)=>{try{if(!t||"object"!=typeof t)return void 0;const e=this.generateEntityId(t);o.add(e),this.updateEntity(e,t,a)}catch(t){0}}),this.cleanupMissingEntities(o),this.updateStats()}generateEntityId(t){if(null===t.ptcId||void 0===t.ptcId||""===t.ptcId)throw new Error(`ptcId is required for entity identification. Received: ${t.ptcId}`);if(null===t.ptcType||void 0===t.ptcType)throw new Error(`ptcType is required for entity identification. Received: ${t.ptcType}`);return`ptc_${t.ptcId}_type_${t.ptcType}`}updateEntity(t,i,n){const s=i.longitude,a=i.latitude,o=i.elevation||0;if(!isNaN(s)&&!isNaN(a)&&isFinite(s)&&isFinite(a)&&!(s<-180||s>180||a<-90||a>90||i.ptcType<0||i.ptcType>5))try{const r=e.Cartesian3.fromDegrees(s,a,o);if(!r||isNaN(r.x)||isNaN(r.y)||isNaN(r.z))return;let c=this.entities.get(t);if(!c&&(c=this.createEntity(t,i),c)){this.entities.set(t,c);this.getEntityTypeName(i.ptcType)}c&&this.updateEntityTransform(c,i,r,n)}catch(t){}}createEntity(t,i){const n=this.getEntityType(i.ptcType),s=this.getEntityTypeName(i.ptcType),a=new e.SampledPositionProperty;a.setInterpolationOptions({interpolationDegree:3,interpolationAlgorithm:e.HermitePolynomialApproximation}),a.forwardExtrapolationType=e.ExtrapolationType.HOLD,a.forwardExtrapolationDuration=2,a.backwardExtrapolationType=e.ExtrapolationType.HOLD,a.backwardExtrapolationDuration=1;const o=void 0!==i.heading?new e.SampledProperty(e.Quaternion):null;o&&(o.setInterpolationOptions({interpolationDegree:3,interpolationAlgorithm:e.HermitePolynomialApproximation}),o.forwardExtrapolationType=e.ExtrapolationType.HOLD,o.forwardExtrapolationDuration=2,o.backwardExtrapolationType=e.ExtrapolationType.HOLD,o.backwardExtrapolationDuration=1);try{const r={id:t,name:`${s}-${i.ptcId}`,position:a,label:{text:this.generateLabelText(i,s),font:this.getLabelFont(i.ptcType),fillColor:this.getLabelColor(i.ptcType),outlineColor:e.Color.BLACK,outlineWidth:2,style:e.LabelStyle.FILL_AND_OUTLINE,pixelOffset:this.getLabelOffset(i.ptcType),horizontalOrigin:e.HorizontalOrigin.CENTER,verticalOrigin:e.VerticalOrigin.BOTTOM,show:!0}};4===i.ptcType||5===i.ptcType?r.point={pixelSize:this.getPointSize(i.ptcType),color:this.getPointColor(i.ptcType),outlineColor:e.Color.BLACK,outlineWidth:2,heightReference:e.HeightReference.CLAMP_TO_GROUND,show:!0}:(r.orientation=o,r.model={uri:this.modelUrls[n],minimumPixelSize:this.getMinimumPixelSize(i.ptcType),maximumScale:this.getMaximumScale(i.ptcType),scale:this.getEntityScale(i.ptcType),heightReference:e.HeightReference.CLAMP_TO_GROUND,runAnimations:!1});const c=this.viewer.entities.add(r);return c.participantType=i.ptcType,c.lastUpdateTime=Date.now(),c}catch(t){return null}}updateEntityTransform(t,i,n,s){if(!n||!e.defined(n)||isNaN(n.x)||isNaN(n.y)||isNaN(n.z))return;if(t.position.addSample(s,n),t.orientation&&void 0!==i.heading&&4!==i.ptcType&&5!==i.ptcType){const a=i.heading;if(isNaN(a)||null==a)return;try{const o=t.orientation;let r=a%360;r<0&&(r+=360);const c=r+(this.headingOffset[i.ptcType]||0),l=e.Math.toRadians(c);if(isNaN(l)||!isFinite(l))return;const h=new e.HeadingPitchRoll(l,0,0),d=e.Transforms.headingPitchRollQuaternion(n,h);if(!d||isNaN(d.x)||isNaN(d.y)||isNaN(d.z)||isNaN(d.w))return;const p=Math.sqrt(d.x*d.x+d.y*d.y+d.z*d.z+d.w*d.w);if(0===p||isNaN(p))return;const u=new e.Quaternion(d.x/p,d.y/p,d.z/p,d.w/p);o.addSample(s,u)}catch(t){}}if(t.label&&t.label.text){const e=this.getEntityTypeName(i.ptcType);t.label.text=this.generateLabelText(i,e)}t.lastUpdateTime=Date.now()}cleanupMissingEntities(t){const e=[];this.entities.forEach((i,n)=>{if(!t.has(n)){const t=i.name?i.name.match(/(\w+)-(\d+)/):null,s=t?t[2]:"unknown",a=t?t[1]:"unknown";e.push({entityId:n,ptcId:s,ptcType:a,entity:i})}}),e.forEach(({entityId:t,ptcId:e,ptcType:i,entity:n})=>{try{this.viewer.entities.remove(n),this.entities.delete(t)}catch(e){this.entities.delete(t)}}),e.length>0&&e.reduce((t,{ptcType:e})=>(t[e]=(t[e]||0)+1,t),{})}updateStats(){let t=0,e=0,i=0,n=0,s=0;this.entities.forEach(a=>{switch(a.participantType){case 1:t++;break;case 2:e++;break;case 3:i++;break;case 4:n++;break;case 5:s++}}),this.stats={vehicleCount:t,bicycleCount:e,pedestrianCount:i,rsuCount:n,reservedCount:s,totalEntities:this.entities.size}}flyToFirstEntityIfNeeded(t){if(1===this.entities.size&&t.length>0){const i=t[0],n=e.Cartesian3.fromDegrees(i.longitude,i.latitude,350);this.viewer.camera.flyTo({destination:n,orientation:{heading:e.Math.toRadians(0),pitch:e.Math.toRadians(-60),roll:0},duration:3,complete:()=>{}})}}clearAllEntities(){this.entities.forEach(t=>{try{this.viewer.entities.remove(t)}catch(t){}}),this.entities.clear(),this.updateStats()}getStats(){return{...this.stats}}getDeviceInfo(){const t=[];return this.entities.forEach((e,i)=>{const n=e.name?e.name.match(/(\w+)-(\d+)/):null,s=n?n[2]:"unknown",a=n?n[1]:"unknown";t.push({entityId:i,ptcId:s,ptcType:e.participantType,typeName:a,lastUpdate:e.lastUpdateTime,age:Date.now()-(e.lastUpdateTime||0)})}),{devices:t,totalCount:t.length,devicesByType:t.reduce((t,e)=>(t[e.typeName]=(t[e.typeName]||0)+1,t),{}),oldestDevice:t.length>0?Math.max(...t.map(t=>t.age)):0}}hasDevice(t,e){const i=`ptc_${t}_type_${e}`;return this.entities.has(i)}getDeviceByPtcId(t,e){const i=`ptc_${t}_type_${e}`;return this.entities.get(i)}getEntityType(t){switch(t){case 1:default:return"vehicle";case 2:return"bicycle";case 3:return"pedestrian";case 4:return"rsu";case 5:return"reserved"}}getEntityTypeName(t){switch(t){case 1:return"车辆";case 2:return"非机动车";case 3:return"行人";case 4:return"RSU";case 5:return"保留";default:return"未知"}}getEntityScale(t){this.realWorldDimensions[t];return 1}getMinimumPixelSize(t){switch(t){case 1:default:return 20;case 2:return 15;case 3:return 10}}getMaximumScale(t){switch(t){case 1:return 15e3;case 2:return 12e3;case 3:return 1e4;default:return 2e4}}getPointSize(t){return 4===t?20:15}getPointColor(t){switch(t){case 4:return e.Color.ORANGE;case 5:return e.Color.GRAY;default:return e.Color.RED}}getLabelFont(t){switch(t){case 1:case 4:default:return"12px Arial";case 2:return"11px Arial";case 3:case 5:return"10px Arial"}}getLabelColor(t){switch(t){case 1:default:return e.Color.WHITE;case 2:return e.Color.GREEN;case 3:return e.Color.YELLOW;case 4:return e.Color.ORANGE;case 5:return e.Color.GRAY}}getLabelOffset(t){switch(t){case 1:default:return new e.Cartesian2(0,-50);case 2:return new e.Cartesian2(0,-40);case 3:return new e.Cartesian2(0,-30);case 4:return new e.Cartesian2(0,-35);case 5:return new e.Cartesian2(0,-25)}}generateLabelText(t,e){const i=this.realWorldDimensions[t.ptcType],n=void 0!==t.speed?`\n速度: ${t.speed.toFixed(1)} m/s`:"",s=void 0!==t.heading?`\n方向: ${t.heading.toFixed(1)}°`:"";let a="";return t.ptcType<=3&&i&&(a=`\n尺寸: ${i.length}x${i.width}x${i.height}m`),`${e}-${t.ptcId}${n}${s}${a}`}},exports.MockWebSocket=i,exports.MousePosition=class{constructor(t){new e.ScreenSpaceEventHandler(t.scene.canvas).setInputAction(i=>{const n=t.scene.camera.pickEllipsoid(i.endPosition,t.scene.globe.ellipsoid);if(n){const t=e.Cartographic.fromCartesian(n),i=`经度:${e.Math.toDegrees(t.longitude).toFixed(2)} 纬度:${e.Math.toDegrees(t.latitude).toFixed(2)} 高度:${t.height.toFixed(2)}`,s=document.getElementById("mouse-position");s&&(s.innerHTML=i)}},e.ScreenSpaceEventType.MOUSE_MOVE)}},exports.PrimitiveEntityManager=class{constructor(t){this.viewer=t,this.scene=t.scene,this.entities=new Map,this.lastMessageIds=new Set,this.stats={totalEntities:0,vehicleCount:0,bicycleCount:0,pedestrianCount:0,memoryUsage:0,lastUpdateTime:0,createCount:0,updateCount:0,errorCount:0},this.modelConfigs={1:{url:"http://58.215.199.197:29002/roadmodal/zjp/su7.glb",scale:1,minimumPixelSize:40,maximumScale:15e3,headingOffset:0},2:{url:"http://58.215.199.197:29002/roadmodal/zjp/diandonche.glb",scale:1,minimumPixelSize:32,maximumScale:12e3,headingOffset:-90},3:{url:"http://58.215.199.197:29002/roadmodal/zjp/xingren.glb",scale:1,minimumPixelSize:28,maximumScale:1e4,headingOffset:-90}},this.initialize()}initialize(){this.primitiveCollection=new e.PrimitiveCollection({show:!0,destroyPrimitives:!0}),this.scene.primitives.add(this.primitiveCollection),this.labelCollection=new e.LabelCollection({scene:this.scene,blendOption:e.BlendOption.OPAQUE_AND_TRANSLUCENT}),this.scene.primitives.add(this.labelCollection)}processParticipants(t){const i=performance.now();this.stats.lastUpdateTime=Date.now();const n=e.JulianDate.fromDate(new Date),s=new Set;t.forEach(t=>{try{const e=this.generateEntityId(t);s.add(e),this.updateEntity(e,t,n),this.stats.updateCount++}catch(t){this.stats.errorCount++}}),this.cleanupMissingEntities(s),this.updateStats();(performance.now()-i).toFixed(2)}generateEntityId(t){return`${t.ptcId||t.id}_${t.ptcType||1}`}updateEntity(t,i,n){const s=e.Cartesian3.fromDegrees(i.lon||i.longitude||0,i.lat||i.latitude||0,i.height||i.elevation||0);let a=this.entities.get(t);if(!a){const e=this.createEntity(t,i,s);e&&(a=e,this.entities.set(t,a),this.stats.createCount++)}a&&(this.updateEntityTransform(a,i,s),a.lastUpdateTime=Date.now())}createEntity(t,i,n){const s=i.ptcType||1,a=this.modelConfigs[s]||this.modelConfigs[1];try{let o=null;e.Model.fromGltfAsync({url:a.url,scale:a.scale,minimumPixelSize:a.minimumPixelSize,maximumScale:a.maximumScale,heightReference:e.HeightReference.CLAMP_TO_GROUND,allowPicking:!0}).then(s=>{o=s,o.id=t;const r=e.Math.toRadians((i.heading||0)+a.headingOffset),c=new e.HeadingPitchRoll(r,0,0);o.modelMatrix=e.Transforms.headingPitchRollToFixedFrame(n,c),this.primitiveCollection.add(o)}).catch(t=>{this.stats.errorCount++});const r=this.labelCollection.add({position:n,text:this.generateLabelText(i),font:this.getLabelFont(s),fillColor:this.getLabelColor(s),outlineColor:e.Color.BLACK,outlineWidth:2,style:e.LabelStyle.FILL_AND_OUTLINE,pixelOffset:this.getLabelOffset(s),horizontalOrigin:e.HorizontalOrigin.CENTER,verticalOrigin:e.VerticalOrigin.BOTTOM,scale:.8,show:!0});return r._entityId=t,{model:o,label:r,ptcType:s,lastUpdateTime:Date.now(),targetPosition:n,targetHeading:i.heading,isAnimating:!1}}catch(t){return this.stats.errorCount++,null}}updateEntityTransform(t,i,n){const s=this.modelConfigs[t.ptcType]||this.modelConfigs[1];if(t.model&&t.model.ready){const a=e.Math.toRadians((i.heading||0)+s.headingOffset),o=new e.HeadingPitchRoll(a,0,0);if(t.targetPosition){e.Cartesian3.distance(t.targetPosition,n)>1&&(t.targetPosition=n,t.model.modelMatrix=e.Transforms.headingPitchRollToFixedFrame(n,o))}else t.targetPosition=n,t.model.modelMatrix=e.Transforms.headingPitchRollToFixedFrame(n,o)}t.label&&(t.label.position=n,t.label.text=this.generateLabelText(i))}cleanupMissingEntities(t){const e=[];this.entities.forEach((i,n)=>{t.has(n)||e.push(n)}),e.forEach(t=>{this.removeEntity(t)}),e.length}removeEntity(t){const e=this.entities.get(t);if(e)try{e.model&&this.primitiveCollection.contains(e.model)&&this.primitiveCollection.remove(e.model),e.label&&this.labelCollection.remove(e.label),this.entities.delete(t)}catch(t){}}updateStats(){let t=0,e=0,i=0;this.entities.forEach(n=>{switch(n.ptcType){case 1:t++;break;case 2:e++;break;case 3:i++}}),this.stats={...this.stats,totalEntities:this.entities.size,vehicleCount:t,bicycleCount:e,pedestrianCount:i,memoryUsage:this.estimateMemoryUsage()}}estimateMemoryUsage(){return 30*this.stats.totalEntities*1024}clearAllEntities(){this.entities.forEach((t,e)=>{this.removeEntity(e)}),this.entities.clear(),this.updateStats()}getStats(){return{...this.stats}}destroy(){this.clearAllEntities(),this.primitiveCollection&&this.scene.primitives.remove(this.primitiveCollection),this.labelCollection&&this.scene.primitives.remove(this.labelCollection)}getEntityTypeName(t){switch(t){case 1:return"车辆";case 2:return"非机动车";case 3:return"行人";default:return"未知"}}getLabelFont(t){switch(t){case 1:default:return"12px Arial";case 2:return"11px Arial";case 3:return"10px Arial"}}getLabelColor(t){switch(t){case 1:default:return e.Color.WHITE;case 2:return e.Color.GREEN;case 3:return e.Color.YELLOW}}getLabelOffset(t){switch(t){case 1:default:return new e.Cartesian2(0,-50);case 2:return new e.Cartesian2(0,-40);case 3:return new e.Cartesian2(0,-30)}}generateLabelText(t){const e=t.ptcType||1,i=this.getEntityTypeName(e),n=void 0!==t.speed?`\n速度: ${t.speed.toFixed(1)} m/s`:"",s=void 0!==t.heading?`\n方向: ${t.heading.toFixed(1)}°`:"";return`${i}-${t.ptcId||t.id}${n}${s}`}},exports.WebSocketManager=class{constructor(t){this.config={reconnectInterval:3e3,maxReconnectAttempts:5,useMock:!1,...t},this.ws=null,this.reconnectAttempts=0,this.reconnectTimer=null,this.isConnected=!1,this.callbacks={onConnectionChange:null,onRSMData:null,onStatsUpdate:null,onError:null},this.stats={messageCount:0,participantCount:0,lastMessageTime:null}}setCallbacks(t){this.callbacks={...this.callbacks,...t}}connect(){try{this.triggerConnectionChange("connecting"),this.config.useMock?this.ws=new i(this.config.url):this.ws=new WebSocket(this.config.url),this.ws.onopen=()=>{this.isConnected=!0,this.reconnectAttempts=0,this.triggerConnectionChange("connected")},this.ws.onmessage=t=>{this.handleMessage(t)},this.ws.onclose=()=>{this.isConnected=!1,this.triggerConnectionChange("disconnected"),this.scheduleReconnect()},this.ws.onerror=t=>{this.triggerConnectionChange("error"),this.triggerError(t)}}catch(t){this.triggerConnectionChange("error"),this.triggerError(t)}}handleMessage(t){if(this.isConnected&&this.ws)try{const e=JSON.parse(t.data);"rsm"===e.msgType&&this.handleRSMMessage(e)}catch(t){this.triggerError(t)}}handleRSMMessage(t){if(!this.isConnected||!this.ws)return;this.stats.messageCount++,this.stats.lastMessageTime=Date.now();const e=t.participants||[];this.stats.participantCount=e.length,this.isConnected&&this.callbacks.onRSMData&&this.callbacks.onRSMData(e,t.timestamp),this.isConnected&&this.callbacks.onStatsUpdate&&this.callbacks.onStatsUpdate(this.stats)}disconnect(){if(this.isConnected=!1,this.reconnectTimer&&(clearTimeout(this.reconnectTimer),this.reconnectTimer=null),this.ws){try{this.ws.onopen=null,this.ws.onmessage=null,this.ws.onclose=null,this.ws.onerror=null,this.ws.interval&&(clearInterval(this.ws.interval),this.ws.interval=null),this.ws.readyState!==WebSocket.OPEN&&this.ws.readyState!==WebSocket.CONNECTING||this.ws.close()}catch(t){}this.ws=null}this.reconnectAttempts=0,this.triggerConnectionChange("disconnected")}destroy(){this.disconnect(),this.callbacks={onConnectionChange:null,onRSMData:null,onStatsUpdate:null,onError:null},this.stats={messageCount:0,participantCount:0,lastMessageTime:null},this.config=null}toggleMockMode(){return this.disconnect(),this.config.useMock=!this.config.useMock,this.stats.messageCount=0,this.stats.participantCount=0,setTimeout(()=>{this.connect()},500),this.config.useMock}scheduleReconnect(){this.reconnectAttempts<this.config.maxReconnectAttempts&&(this.reconnectAttempts++,this.reconnectTimer=setTimeout(()=>{this.connect()},this.config.reconnectInterval))}triggerConnectionChange(t){this.callbacks.onConnectionChange&&this.callbacks.onConnectionChange(t)}triggerError(t){this.callbacks.onError&&this.callbacks.onError(t)}getConnectionStatus(){return this.isConnected?"connected":this.reconnectAttempts>0?"connecting":"disconnected"}getStats(){return{...this.stats}}},exports.initViewer=async function(t={}){const{cesiumBaseUrl:i="https://cdn.cesium.com/cesiumjs/1.131/Build/Cesium/",useLocalAssets:n=!1,ionAccessToken:s="eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJqdGkiOiI4NTg1NWQzNC05N2YyLTQ1MmQtOTZhOC1mNjJkZjg1OTljNDMiLCJpZCI6MzExNzc4LCJpYXQiOjE3NDk3ODAyNzd9.3zLZ8Dv48IzyXseYPE-gAO0omEKttnDOwc526sHRopU"}=t;window.CESIUM_BASE_URL=n?"/node_modules/@v2x-three/cesium/dist/":i,e.Ion.defaultAccessToken=s,e.Camera.DEFAULT_VIEW_RECTANGLE=new e.Rectangle.fromDegrees(89.5,20.4,110.4,61.2);const a=new e.Viewer("cesiumContainer",{infoBox:!1,geocoder:!1,homeButton:!1,sceneModePicker:!1,navigationHelpButton:!1,animation:!1,timeline:!1,fullscreenButton:!0,baseLayerPicker:!1});var o=document.getElementsByClassName("cesium-infoBox-iframe")[0];o&&(o.setAttribute("sandbox","allow-same-origin allow-scripts allow-popups allow-forms"),o.setAttribute("src","")),a.cesiumWidget.creditContainer.style.display="none";try{const t=await e.createOsmBuildingsAsync();a.scene.primitives.add(t)}catch(t){}return a},exports.modifyBuild=async function(t){let i=await e.createOsmBuildingsAsync();t.scene.primitives.add(i),i.tileVisible.addEventListener(function(t){const e=t.content,i=e.featuresLength;for(let t=0;t<i;t++){e.getFeature(t).content._model._rendererResources.sourceShaders[1]}})}; //# sourceMappingURL=index.js.map