2015-09-23 19 views
2

我想訪問我的czml數據源中的一些實體,以便在查看器中進行跟蹤,但是在加載之後,作爲相機的一個選項。我知道我可以在加載它時訪問我的czml文件中的實體,但我不知道如何在加載後訪問它們。我在這裏有一個例子:如何在加載後訪問CzmlDataSource中的實體

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; 
     }); 

此代碼工作正常,但我想給的選項給觀衆選擇的相機,那麼我需要有機會獲得汽車後,我完成加載,我試了幾種方法,但其中沒有一個可行。我有一些例子波紋管:

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文件中定義的實體?

回答

1

你的第二塊代碼不起作用的原因似乎只是因爲你沒有等待czmlDataSource的異步加載。

嘗試修改您的第二個代碼塊,取掉最後2行並將它們包裝在onClick回調按鈕中。如果您在加載CZML之前單擊該按鈕,則myEntity將不確定,並且相機不會更改。如果您在CZML加載後再次單擊相同的按鈕,它應該可以正常工作。

+0

我不知道該怎麼做,我用了sandcastle.addToolbarButton,但沒有工作 – azar

+0

你是對的,這是因爲我定義了一個重置​​選項,並在那個中刪除了dataSources。現在我需要弄清楚如何定義不同級別的按鈕。 – azar

相關問題