在基于cesium地图引擎开发的时候,有时候会需要保存某个场景到文件,然后在需要的时候导入文件时恢复该场景。其中就会遇到保存摄像机参数的问题。
首先,在3D地图模式下,参照cesium官方的api,保存camera的position、up和direction等参数就可以了,在场景恢复的时候将各个参数对应的赋值回去就好了。代码如下:
var options = {
position: null,
direction: null,
up: null
}
options.position = viewer.camera.positionWC.clone();
options.up= viewer.camera.up.clone();
options.direction = viewer.camera.direction.clone();
但是,在哥伦布和2D地图模式下,仅保存这些参数就会出现问题,即在恢复场景的时候仅将地图模式切换为2D或者Columbus模式,而摄像机的位置为viewHome的状态,不会恢复之前场景的或拉近或俯瞰某个城市的状态。在cesium的官方论坛,也有人提出保存摄像机参数的问题,但是结果一样,也是2D的时候有问题,现给出cesium官方的对于保存的参考代码:
var StoredView = function()
{
this.position = undefined;
this.direction = undefined;
this.up = undefined;
this.right = undefined;
this.transform = undefined;
this.frustum = undefined;
};
StoredView.prototype.save = function(camera)
{
this.position = Cesium.Cartesian3.clone(camera.positionWC, this.position);
this.heading = camera.heading;
this.picth = camera.pitch;
this.roll = camera.roll;
this.transform = Cesium