首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >根据ID加载CZML文件的特定部分

根据ID加载CZML文件的特定部分
EN

Stack Overflow用户
提问于 2022-05-31 15:11:43
回答 1查看 108关注 0票数 1

在铯演示这里中,您可以选择选择要查看的数据,只需简单地更改读取数据的位置。

我希望“卫星”按钮只显示来自CZML文件的id中的“卫星”,而忽略其余的,目前我的代码如下所示:

代码语言:javascript
复制
Sandcastle.addDefaultToolbarButton("Satellites", function () {  
    Cesium.CzmlDataSource.load("../SampleData/simple.czml").then(function(dataSource) {
    viewer.clock.multiplier = 1;
    var entity = dataSource.entities.getById("Satellite");

    viewer.dataSources.add(entity);
  });
  viewer.camera.flyHome(0);
});

然而,当我尝试这一点时,什么也没有显示出来。我也试过只使用车辆(其中只有一个实体,ID正好是" Vehicle "),这样我就可以检查它是否正确地获取数据,但是当单击vehicle按钮时,我得到了一个错误:"TypeError:无法读取未定义的属性(读取‘长度’)“。

这是我的汽车区:

代码语言:javascript
复制
Sandcastle.addToolbarButton("Vehicle", function () {
  Cesium.CzmlDataSource.load("../SampleData/Vehicle.czml").then(function(dataSource) {
    viewer.clock.multiplier = 1;

    var entity = dataSource.entities.getById("Vehicle");
    viewer.dataSources.add(entity);
  });
  
  viewer.scene.camera.setView({
    destination: Cesium.Cartesian3.fromDegrees(-116.52, 35.02, 95000),
    orientation: {
      heading: 6,
    },
  });
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-06-01 15:43:17

这是一个修正沙堡演示

原文中的一些问题:

  • 您在一个"Satellite"中而不是"Satellite/Geoeye1"中有一个错误的ID,因此找不到该实体。
  • 您不应该将单个实体传递给viewer.dataSources.add(),而应该使用viewer.entities.add()进行此操作。
  • 最重要的,往往被忽视的问题,是时钟设置错了。这些实体存在一段时间(几年前首次创建示例场景时),而它们现在并不存在。通常向查看器添加dataSource时,时钟会自动更新,但在这种情况下,添加单个实体不会这样做,因此时钟显示当前时间而不是实体存在的时间。有几种方法可以解决这个问题,但我选择了这一种:
代码语言:javascript
复制
    viewer.clock.currentTime = dataSource.clock.startTime;
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72450278

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档