原文链接及内容
注: 由于个人的Cesium Ion中没有官方示例中的数据,因此仅在官方提供的在线编辑器中进行了学习、修改。
实现效果如下:

示例代码如下:
1 2 3 4 5 6 7 8 9 10 11
| <style> @import url(../templates/bucket.css); .cesium-performanceDisplay-defaultContainer { top: 10px; left: 10px; right: auto; } </style> <div id="cesiumContainer" class="fullSize"></div> <div id="loadingOverlay"><h1>Loading...</h1></div> <div id="toolbar"></div>
|
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
| const viewer = new Cesium.Viewer("cesiumContainer", { geocoder: true, sceneModePicker: false, homeButton: false, navigationHelpButton: false, baseLayerPicker: 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.debugShowFramesPerSecond = true;
const geocoder = viewer.geocoder.viewModel;
geocoder.searchText = "Vienna"; geocoder.flightDuration = 0.0; geocoder.search();
try {
const tileset = await Cesium.Cesium3DTileset.fromIonAssetId(5737); viewer.scene.primitives.add(tileset);
tileset.style = new Cesium.Cesium3DTileStyle({ color: "rgba(255, 255, 255, 0.5)", }); } catch (error) { console.log(`Error loading tileset: ${error}`); }
const highlighted = { feature: undefined, originalColor: new Cesium.Color(), };
viewer.screenSpaceEventHandler.setInputAction(function onMouseMove(movement) { if (Cesium.defined(highlighted.feature)) { highlighted.feature.color = highlighted.originalColor; highlighted.feature = undefined; }
const pickedFeature = viewer.scene.pick(movement.endPosition); if (!Cesium.defined(pickedFeature)) { return; }
highlighted.feature = pickedFeature; Cesium.Color.clone(pickedFeature.color, highlighted.originalColor); pickedFeature.color = Cesium.Color.YELLOW; }, Cesium.ScreenSpaceEventType.MOUSE_MOVE);
|