Ste*_*man 5 javascript cesium czml
我试图将图标显示为广告牌,并按距离缩放它。我可以进行很好的管理,但是一旦我通过CZML而不是直接在JS中加载广告牌,就无法获得调整广告牌大小的功能。
在我的JS文件中,我有:
var czmlDataSource = new Cesium.CzmlDataSource();
czmlDataSource.loadUrl('airports.czml');
viewer.dataSources.add(czmlDataSource);
Run Code Online (Sandbox Code Playgroud)
我的CZML文件显示:
[
{
"id":"document",
"version":"1.0"
},
{
"id":"test",
"billboard":{
"image":"airport.png",
"verticalOrigin":"BOTTOM",
"show":true
},
"position":{
"cartographicDegrees":[
0.055278, 51.505278, 0
]
}
}
]
Run Code Online (Sandbox Code Playgroud)
在我使用这个之前:
entity.billboard.scaleByDistance = new Cesium.ConstantProperty(new Cesium.NearFarScalar(1.5e3, 0.3, 3.5e5, 0.0));
Run Code Online (Sandbox Code Playgroud)
显然,这现在行不通。但是我找不到一种方法来获取广告牌的ID并使用scaleByDistance。
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));
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1307 次 |
| 最近记录: |