根据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
)
答案 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);