6

アイコンをビルボードとして表示し、距離で拡大縮小しようとしています。私はうまく管理できますが、JSで直接ではなくCZMLを介してビルボードをロードするとすぐに、ビルボードのサイズを変更できません。

私のJSファイルには次のものがあります:

var czmlDataSource = new Cesium.CzmlDataSource();
czmlDataSource.loadUrl('airports.czml');
viewer.dataSources.add(czmlDataSource);

私のCZMLファイルは次を示しています:

[
  {
    "id":"document",
    "version":"1.0"
  },
  {
    "id":"test",
    "billboard":{
      "image":"airport.png",
      "verticalOrigin":"BOTTOM",
      "show":true
    },
    "position":{
      "cartographicDegrees":[
        0.055278, 51.505278, 0
      ]
    }
  }
]

これを使用する前に:

entity.billboard.scaleByDistance = new Cesium.ConstantProperty(new Cesium.NearFarScalar(1.5e3, 0.3, 3.5e5, 0.0));

明らかに、これは現在機能していません。しかし、ビルボードの ID を取得して scaleByDistance を使用する方法が見つかりません。

4

2 に答える 2

4

CZML はscaleByDistanceまだ組み込みをサポートしていません。ただし、投稿の下部で提案されていることは引き続き実行できます。これは、ID を見つけて、その方法でプロパティを適用することです。

これloadUrlは非同期であるため、読み込まれるまで ID を取得できないことに注意してください。コードは次のようになります。

var czmlDataSource = new Cesium.CzmlDataSource();
viewer.dataSources.add(czmlDataSource);
czmlDataSource.loadUrl('airports.czml').then(function() {
    var entity = czmlDataSource.entities.getById('test');
    entity.billboard.scaleByDistance = new Cesium.ConstantProperty(
            new Cesium.NearFarScalar(1.5e3, 0.3, 3.5e5, 0.0));
});
于 2015-02-13T21:36:35.170 に答える