原文链接及内容

: 由于个人的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 {
/**
* 矢量 3D Tiles 处于实验阶段,其格式将来可能会发生变化。
* 详情访问:https://github.com/CesiumGS/3d-tiles/tree/vctr/TileFormats/VectorData
*/
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);