Cesium JS保存相机位置

时间:2014-03-08 10:37:41

标签: 3d data-visualization cesium

我正在考虑保存相机位置(特别是旋转),因此在2D和3D之间来回切换将始终返回到我上次在3D中查看的位置。这样做的最佳方式是什么?

我还想将其保存为cookie或本地存储空间,以便用户可以直接进入页面上保存的视图,其中包含来自其他页面(可能不是美国)的Cesium。

2 个答案:

答案 0 :(得分:5)

我建议您在切换视图之前创建一个简单的JS对象并存储摄像头的属性。然后将其存储到localStorage中。我发现store.js是浏览器无关的本地存储的一个非常有用的包装器。

如果你需要更多帮助,我可以在今晚晚些时候提出一个例子。

    var camera = $scope.viewer.scene.camera;
    var store = {
      position: camera.position.clone(),
      direction: camera.direction.clone(),
      up: camera.up.clone(),
      right: camera.right.clone(),
      transform: camera.transform.clone(),
      frustum: camera.frustum.clone()
    };

答案 1 :(得分:0)

基于Mike LP的答案:

let undoCamera = {
    position: this.camera.position.clone(),
    direction: this.camera.direction.clone(),
    up: this.camera.up.clone()
};
this.camera.position = undoCamera.position;
this.camera.direction = undoCamera.direction;
this.camera.up = undoCamera.up;

这至少在3D和Columbus模式下对我有效。

如果需要,您也可以对frustum进行同样的操作。

https://www.cesium.com/docs/cesiumjs-ref-doc/Camera.html