| <!DOCTYPE html> |
| <html lang="en"> |
| <head> |
| <meta charset="UTF-8"> |
| <meta name="viewport" content="width=device-width, initial-scale=1.0"> |
| <title>CesiumJS Standalone Test</title> |
| <link href="https://cesium.com/downloads/cesiumjs/releases/1.123/Build/Cesium/Widgets/widgets.css" rel="stylesheet"> |
| <style> |
| html, body, #cesiumContainer { |
| width: 100%; |
| height: 100%; |
| margin: 0; |
| padding: 0; |
| overflow: hidden; |
| } |
| #status { |
| position: absolute; |
| top: 10px; |
| left: 10px; |
| background: rgba(0, 0, 0, 0.8); |
| color: #0f0; |
| padding: 10px; |
| font-family: monospace; |
| font-size: 12px; |
| z-index: 1000; |
| max-width: 400px; |
| max-height: 300px; |
| overflow-y: auto; |
| } |
| </style> |
| </head> |
| <body> |
| <div id="cesiumContainer"></div> |
| <div id="status">Loading CesiumJS...</div> |
| <script src="https://cesium.com/downloads/cesiumjs/releases/1.123/Build/Cesium/Cesium.js"></script> |
| <script> |
| const status = document.getElementById('status'); |
| function log(msg) { |
| console.log(msg); |
| status.innerHTML += '<br>' + msg; |
| status.scrollTop = status.scrollHeight; |
| } |
| |
| try { |
| log('CesiumJS version: ' + Cesium.VERSION); |
| |
| |
| Cesium.Ion.defaultAccessToken = undefined; |
| log('Ion disabled'); |
| |
| |
| Cesium.Camera.DEFAULT_VIEW_RECTANGLE = Cesium.Rectangle.fromDegrees( |
| -130, 20, -60, 55 |
| ); |
| log('Default view rectangle set'); |
| |
| |
| const viewer = new Cesium.Viewer('cesiumContainer', { |
| baseLayer: false, |
| geocoder: false, |
| baseLayerPicker: false, |
| animation: false, |
| timeline: false, |
| homeButton: true, |
| sceneModePicker: true, |
| navigationHelpButton: false, |
| fullscreenButton: false, |
| terrainProvider: undefined, |
| }); |
| window.viewer = viewer; |
| log('Viewer created'); |
| |
| |
| viewer.scene.globe.show = true; |
| viewer.scene.globe.enableLighting = false; |
| viewer.scene.globe.baseColor = Cesium.Color.DARKSLATEGRAY; |
| |
| viewer.scene.requestRenderMode = false; |
| log('Globe configured, continuous rendering enabled'); |
| |
| |
| log('Creating OSM provider...'); |
| const osmProvider = new Cesium.UrlTemplateImageryProvider({ |
| url: 'https://tile.openstreetmap.org/{z}/{x}/{y}.png', |
| minimumLevel: 0, |
| maximumLevel: 19, |
| credit: new Cesium.Credit('OpenStreetMap'), |
| }); |
| |
| |
| osmProvider.errorEvent.addEventListener((error) => { |
| log('OSM ERROR: ' + JSON.stringify(error)); |
| }); |
| |
| |
| const layer = viewer.imageryLayers.addImageryProvider(osmProvider); |
| log('OSM layer added: ' + (layer ? 'success' : 'failed')); |
| |
| |
| viewer.scene.globe.tileLoadProgressEvent.addEventListener((queueLength) => { |
| if (queueLength > 0) { |
| log('Tiles loading: ' + queueLength); |
| } |
| }); |
| |
| |
| log('Flying to USA rectangle...'); |
| viewer.camera.flyTo({ |
| destination: Cesium.Rectangle.fromDegrees(-130, 20, -60, 55), |
| duration: 0 |
| }); |
| |
| let renderCount = 0; |
| const intervalId = setInterval(() => { |
| viewer.render(); |
| renderCount++; |
| if (renderCount <= 3) { |
| log('Interval render #' + renderCount); |
| } |
| if (renderCount > 20) { |
| clearInterval(intervalId); |
| log('Stopped interval rendering'); |
| } |
| }, 50); |
| log('FlyTo called, interval rendering started'); |
| |
| log('Initialization complete!'); |
| } catch (e) { |
| log('ERROR: ' + e.message); |
| console.error(e); |
| } |
| </script> |
| </body> |
| </html> |
|
|