我试图显示一个图标作为一个广告牌,并按距离进行缩放。我可以管理的很好,但一旦我通过CZML加载广告牌,而不是直接在JS中,我就无法获得广告牌的大小调整。
在我的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。
发布于 2015-02-13 21:36:35
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));
});发布于 2019-09-09 19:44:36
接受的解决办法已不再必要。从那时起,铯就增加了对执行以下操作的支持(而不是new Cesium.NearFarScalar,它显然不能与CZML (它只是JSON)一起工作):
"scaleByDistance": { "nearFarScalar": [ 1.0, 2.0, 10000.0, 3.0 ] }
我自己测试了这个功能,它可以工作。
来源:
https://stackoverflow.com/questions/28503391
复制相似问题