gpt4 book ai didi

cesium - 加载后如何访问 CzmlDataSource 中的实体

转载 作者:行者123 更新时间:2023-12-02 01:33:27 24 4
gpt4 key购买 nike

我想访问我的 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 文件中已经存在的实体中定义一个实体吗?

最佳答案

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

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

关于cesium - 加载后如何访问 CzmlDataSource 中的实体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32746825/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com