gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-28 00:48:47 24 4
gpt4 key购买 nike

根据Cesium API,要切换 Assets 的广告牌(或标签)的可见性,您只需将billboard.show属性分配为false即可。当我尝试这样做时,Cesium 会出错

An error occurred while rendering.  Rendering has stopped.
TypeError: undefined is not a function
...

This discussion来自 cesium-dev google 小组的内容包括一些用于打开/关闭广告牌可见性的示例代码。如果您尝试在 CZML 的实体上显示 = false(此示例不使用 CZML),则相同的代码不起作用。

这是我尝试过的

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

(loadedCZML 是一个 Cesium.CzmlDataSource)

最佳答案

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

使用 CzmlDataSourceentity 时,show 属性被视为 TimeIntervalCollectionProperty(至少是我的 CZML)。

Cesium 中的所有属性都必须实现 getValue 函数,当你去设置 show = false 时,属性的 setter 无法将 false 应用于TimeIntervalCollectionProperty 而是将整个属性替换为简单的 false 值。

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

而不是这个:

asset.billboard.show = false;//错误

这样做:

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

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

entity.billboard.image = pinBuilder.fromColor(Cesium.Color.CRIMSON, 48); //error

//do this instead
entity.billboard.image = new Cesium.ConstantProperty(pinBuilder.fromColor(Cesium.Color.CRIMSON, 48).toDataURL());

关于javascript - 如何切换 CZML 实体广告牌的可见性属性 (billboard.show)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27048891/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com