我想保存一个相机位置(特别是旋转),这样在2D和3D之间来回切换时,总是能回到我上次在3D中查看的位置。最好的方法是什么?
我还希望将其保存为cookie或本地存储,以便用户从其他页面(可能不是US)进入带有Cesium的页面时直接进入该保存视图。
我想保存一个相机位置(特别是旋转),这样在2D和3D之间来回切换时,总是能回到我上次在3D中查看的位置。最好的方法是什么?
我还希望将其保存为cookie或本地存储,以便用户从其他页面(可能不是US)进入带有Cesium的页面时直接进入该保存视图。
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()
};
基于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和哥伦布模式下。
如果需要,您也可以使用frustum
进行相同操作。
// Check if the camera extent is valid (not zero or near-zero)
if (Cesium.defined(cameraExtentRectangle)) {
const west = Cesium.Math.toDegrees(cameraExtentRectangle.west);
const south = Cesium.Math.toDegrees(cameraExtentRectangle.south);
const east = Cesium.Math.toDegrees(cameraExtentRectangle.east);
const north = Cesium.Math.toDegrees(cameraExtentRectangle.north);
// Create a GeoJSON Polygon feature from the extent
const geoJSONFeature = {
type: "Feature",
properties: {},
geometry: {
type: "Polygon",
coordinates: [
[
[west, north],
[east, north],
[east, south],
[west, south],
[west, north], // Closing the polygon
],
],
},
};
// Convert the GeoJSON feature to a JSON string
const geoJSONString = JSON.stringify(geoJSONFeature);
console.log(geoJSONString);
} else {
console.error("Invalid camera extent: Cannot compute the view extent.");
}
Cesium.Cartographic.fromCartesian(viewer.camera.pickEllipsoid(amera.position.clone().x, amera.position.clone().y))
但似乎是错误的方法。感谢任何帮助。 - epifanio