4

我想访问我的 czml 数据源中的一些实体,以便在查看器中进行跟踪,但在加载之后,作为相机的选项之一。我知道我可以在加载 czml 文件中的实体时访问它们,但我不知道加载后如何访问它们。这里我有一个例子:

  var viewer = new Cesium.Viewer('cesiumContainer'); 
  var czmlDataSource = new Cesium.CzmlDataSource();
  viewer.dataSources.add(czmlDataSource);
  czmlDataSource.load('../../SampleData/Vehicle.czml').then(function(){
         var myEntity= czmlDataSource.entities.getById('Vehicle');
          viewer.trackedEntity=myEntity;
         });

这段代码工作正常,但我想给查看者选择相机的选项,然后我需要在完成加载后访问 Vehicle,我尝试了几种方法,但没有一种方法有效。我有一些例子如下:

  var viewer = new Cesium.Viewer('cesiumContainer'); 
  var czmlDataSource = new Cesium.CzmlDataSource();
  viewer.dataSources.add(czmlDataSource);
  czmlDataSource.load('../../SampleData/Vehicle.czml');
  var myEntity= czmlDataSource.entities.getById('Vehicle');
  viewer.trackedEntity=myEntity;

你知道我如何从我的 czml 文件中已经存在的实体中定义一个实体吗?

4

1 回答 1

2

您的第二个代码块不起作用的原因似乎仅仅是因为您没有等待 czmlDataSource 的异步加载。

尝试修改你的第二个代码块,去掉最后两行并将它们包装在一个按钮 onClick 回调中。如果您在加载 CZML 之前单击该按钮,myEntity则将未定义并且相机不会更改。如果在 CZML 加载后再次单击相同的按钮,它应该可以正常工作。

于 2015-09-23T21:55:57.250 回答