加载后如何访问 CzmlDataSource 中的实体
How to access entities in CzmlDataSource after loading
我想访问我的 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 后再次单击同一个按钮,它应该可以正常工作。
我想访问我的 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 后再次单击同一个按钮,它应该可以正常工作。