原文链接及内容
效果如下图所示:

示例代码如下:
注:关于I3S(Index 3D Scene)请参考文章:https://cesium.com/blog/2023/02/06/cesiumjs-adds-support-for-indexed-3d-scene-layers-i3s/ 。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72
| const viewer = new Cesium.Viewer("cesiumContainer", { geocoder: false, homeButton: false, sceneModePicker: false, baseLayerPicker: false, navigationHelpButton: false, navigationInstructionsInitiallyVisible: false, animation: false, timeline: false, fullscreenButton: false, selectionIndicator: false, skyBox: false, shouldAnimate: true, terrain: Cesium.Terrain.fromWorldTerrain(), }); viewer.cesiumWidget.creditContainer.style.display = "none";
viewer.scene.globe.depthTestAgainstTerrain = false;
const tours = { Frankfurt: "https://tiles.arcgis.com/tiles/z2tnIkrLQ2BRzr6P/arcgis/rest/services/Frankfurt2017_vi3s_18/SceneServer/layers/0", }; try {
const geoidService = await Cesium.ArcGISTiledElevationTerrainProvider.fromUrl( "https://tiles.arcgis.com/tiles/z2tnIkrLQ2BRzr6P/arcgis/rest/services/EGM2008/ImageServer", );
const i3sOptions = { geoidTiledTerrainProvider: geoidService, };
const i3sProvider = await Cesium.I3SDataProvider.fromUrl( tours.Frankfurt, i3sOptions, );
viewer.scene.primitives.add(i3sProvider);
const center = Cesium.Rectangle.center(i3sProvider.extent); center.height = 5000.0; viewer.camera.setView({ destination: Cesium.Ellipsoid.WGS84.cartographicToCartesian(center), }); } catch (error) { console.log(`创建 I3S Data Provider时出错: ${error}`); }
|