zhitong.yu
2025-02-14 c4cce49f5e6fd1f74b9962cd86dd201694c3765e
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
function Map3d() {
    tiles3dLayer = new mars3d.layer.TilesetLayer({
        name: "石化工厂",  // 图层名称,用于标识该图层
        url: "/hxzkuwb/Home/demo/titles/tileset.json",  // 3D Tiles 数据的 URL 地址,指向 JSON 文件
        position: { lng: 104.348246, lat: 31.244458, alt: 486 },  // 图层的初始位置,包含经度、纬度和高度
        maximumScreenSpaceError: 5,  // 最大屏幕空间误差,控制模型的细节渲染级别,值越高性能越好但视觉效果可能下降
        shadows: Cesium.ShadowMode.DISABLED,  // 设置阴影模式,禁用阴影以提高性能,若需要可设置为 ENABLED 启用阴影
        skipLevelOfDetail: true,  // 跳过细节层级,减少渲染时的计算负担,提升性能
        loadSiblings: true,  // 加载兄弟节点,确保在需要时快速加载周围节点,提高流畅性
        cullRequestsWhileMoving: true,  // 在移动时进行剔除,减少不必要的渲染计算,提高性能
        cullRequestsWhileMovingMultiplier: 15,  // 在移动时的剔除请求倍数,设置为 10 表示在移动时增加剔除请求,进一步提升性能
        preferLeaves: true,  // 优先加载叶子节点,优化加载顺序,提升用户体验,特别是在复杂场景中
        preloadWhenHidden: true,  // 在模型隐藏时进行预加载,减少下次显示时的延迟
    });
    map.addLayer(tiles3dLayer)
 
    // map.on(mars3d.EventType.terrainChange, function (event) {
    //   if (map.hasTerrain) {
    //     tiles3dLayer.alt = 11.5
    //   } else {
    //     tiles3dLayer.alt = -118.5
    //   }
    // })
 
    tiles3dLayer.readyPromise.then(function (layer) {
 
        // tiles3dLayer.tileset 是 Cesium3DTileset,支持绑定所有Cesium原生事件
        // 参考API http://mars3d.cn/api/cesium/Cesium3DTileset.html
        tiles3dLayer.tileset.loadProgress.addEventListener(function (numberOfPendingRequests, numberOfTilesProcessing) {
            if (numberOfPendingRequests === 0 && numberOfTilesProcessing === 0) {
 
                return
            }
 
        })
    })
    // 加载的事件 只执行一次
    tiles3dLayer.on(mars3d.EventType.initialTilesLoaded, function (event) {
 
    })
 
    // 会执行多次,重新加载一次完成后都会回调
    tiles3dLayer.on(mars3d.EventType.allTilesLoaded, function (event) {
        console.log("触发allTilesLoaded事件", event)
    })
}