如何切换CZML实体广告牌的可见性属性(billboard.show)?

时间:2014-11-20 20:25:57

标签: javascript cesium

根据Cesium API,要切换资产广告牌(或标签)的可见性,您只需将billboard.show属性指定为false即可。当我试图这样做时,Cesium会错误地用

An error occurred while rendering.  Rendering has stopped.
TypeError: undefined is not a function
...
来自cesium-dev google群组的

This discussion包含一些示例代码,用于打开/关闭广告牌可见性。如果您在CZML的实体上尝试show = false,则相同的代码不起作用(此示例不使用CZML)。

这是我试过的

var asset = loadedCZML.entities.getById(id);
asset.billboard.show = false; //Error!

(loadedCZML是Cesium.CzmlDataSource

1 个答案:

答案 0 :(得分:1)

API文档没有提到实体的show属性可能并不总是一个简单的布尔属性(如API所描述的)。

使用CzmlDataSource的{​​{1}}时,entity属性被视为show(至少是我的CZML)。

Cesium中的所有属性都必须实现TimeIntervalCollectionProperty函数,当您设置getValue时,该属性的setter无法对show = false应用false而是取代整个属性的值为TimeIntervalCollectionProperty

错误false是cesium渲染调用尝试在undefined is not a function属性上调用getValue()的结果。无论如何,修复很简单:

而不是:

show

这样做:

asset.billboard.show = false; //error

PS:这适用于其他Cesium属性,请参阅以下示例:

asset.billboard.show = new Cesium.ConstantProperty(false);