【问题标题】:Rotate globe in cesium map在铯地图中旋转地球
【发布时间】:2021-09-10 17:57:53
【问题描述】:

我正在通过这段代码旋转我的铯地球仪:

spinGlobe( dynamicRate ){
    var previousTime = Date.now();

    this.viewer.scene.postRender.addEventListener(function (scene, time){
        var spinRate = dynamicRate;
        var currentTime = Date.now();
        var delta = ( currentTime - previousTime ) / 1000;
        previousTime = currentTime;
        this.viewer.scene.camera.rotate(Cesium.Cartesian3.UNIT_Z, -spinRate * delta);
    });
}

现在我想停止它,那么如何在特定事件中停止地球旋转?

【问题讨论】:

    标签: javascript cesium


    【解决方案1】:

    有一个removeEventListener 需要传递对您提供给addEventListener 的同一函数的引用。

    这是Sandcastle Demo。请注意,此演示不能防止用户多次单击“Spin”,因此用户需要单击“Stop”相同的次数。真实(非演示)代码应注意不要为同一事件添加多个事件侦听器。

    var viewer = new Cesium.Viewer("cesiumContainer");
    
    var previousTime = Date.now();
    var spinRate = 1.0;
    
    function applyGlobeSpin() {
        var currentTime = Date.now();
        var delta = ( currentTime - previousTime ) / 1000;
        previousTime = currentTime;
        viewer.scene.camera.rotate(Cesium.Cartesian3.UNIT_Z, -spinRate * delta);
    }
    
    function startSpinGlobe() {
        previousTime = Date.now();
        viewer.clock.onTick.addEventListener(applyGlobeSpin);
    }
    
    function stopSpinGlobe() {
        viewer.clock.onTick.removeEventListener(applyGlobeSpin);
    }
    
    Sandcastle.addToolbarButton("Spin", startSpinGlobe);
    Sandcastle.addToolbarButton("Stop", stopSpinGlobe);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-04-18
      • 2015-03-03
      • 2021-05-16
      • 2019-02-05
      • 2014-02-02
      • 1970-01-01
      • 2014-07-18
      相关资源
      最近更新 更多