CesiumJS如何在viewer.trackedEntity更改时保持Cesium.Viewer的缩放级别

问题描述 投票:2回答:1

我有2个不同的Cesium.Viewer实例,我想在用户缩放其中一个时同步2个查看器。

怎么做?

更新:在我的应用程序中,我有2个不同的Cesium.Viewer实例。但对于这个问题,我认为它与Cesium.Viewer的数量无关。所以我更新了如下问题:

我有2架飞机在Cesium.Viewer上飞行,如附图所示,一个在红色路线上(参考为红色飞机),另一个在红色路线上(参考为红色飞机)。

步骤1:我通过双击跟踪黄色平面,然后它看起来像pic-1;

第2步:我将它缩小到pic-2;

步骤3:我通过双击改变跟踪红色平面,它看起来像pic-3;

第四步:我把它缩小到pic-4;

每当我更改被跟踪的实体时(如步骤3),我需要再次手动缩小它。

那么,我的问题是如何在更改被跟踪的实体时保持缩放级别?

enter image description here

cesium
1个回答
0
投票
  1. 保存当前的camera.view.scene
  2. 检测trackedEntity更改时的时刻
  3. 恢复camera.view.scene

要保存和恢复,您可以使用此代码作为示例:

var viewer = new Cesium.Viewer('cesiumContainer');
var savedView = {};

Cesium.CzmlDataSource.load('../../SampleData/simple.czml').then(function(dataSource) {
    viewer.dataSources.add(dataSource);

    Sandcastle.addToolbarButton('Save View', function() {
        savedView.offset = viewer.scene.camera.position.clone();
    });

    Sandcastle.addToolbarButton('Restore View', function() {
        viewer.trackedEntity._viewFrom._value = savedView.offset;
    });
});

注意:viewFrom param应该在source czml中用于track。 Smth喜欢:

 "viewFrom": {
    "cartesian": [
      -2080,
      -1715,
      779
    ]
  },
© www.soinside.com 2019 - 2024. All rights reserved.