我想访问我的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文件中的实体定义实体吗?
答案 0 :(得分:1)
您的第二段代码无法正常工作的原因似乎只是因为您还没有等待czmlDataSource的异步加载。
尝试修改你的第二个代码块,取下最后两行并将它们包装在按钮onClick回调中。如果在加载CZML之前单击按钮,myEntity
将不确定,摄像机将无法更改。如果在加载CZML后再次单击相同的按钮,它应该可以正常工作。