我试图将图标显示为广告牌,并按距离缩放它。我可以进行很好的管理,但是一旦我通过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。
之前好像有人问过这个问题,但我一直找不到合适的例子。我熟悉 PHP,但不熟悉 Javascript,无法弄清楚如何流式传输 CZML。
我想在地图上显示大约 6.500 个资产。为了防止网页在加载完所有内容后显示(并测试用户的耐心),我希望它显示然后在后台加载资产。
有人可以指出我如何做到这一点的例子吗?我可以像这样加载 czml 文件:
var czmlDataSource = new Cesium.CzmlDataSource();
viewer.dataSources.add(czmlDataSource);
czmlDataSource.loadUrl('some_file.czml');
Run Code Online (Sandbox Code Playgroud)
但这就是我得到的 :-( 我知道我应该在某处使用 .processUrl 并且我知道我应该在 CZML 文件中使用不同的数据包,因此我的 CZML 文件如下所示:
[
event: czml
data: {
"id":"document",
"version":"1.0"
}
event: czml
data: {
"id":"1",
"billboard":{
"image":"label.png",
"verticalOrigin":"BOTTOM",
"show":true
},
"position":{
"cartographicDegrees":[
20.0, 50.0, 0
]
}
}
event: czml
data: {
"id":"2",
"billboard":{
"image":"label.png",
"verticalOrigin":"BOTTOM",
"show":true
},
"position":{
"cartographicDegrees":[
10.0, 52.0, 0
]
}
}
]
Run Code Online (Sandbox Code Playgroud)
如果有人可以提供一个工作样本,那么一个 .czml 文件和一个 .js 文件,那就太好了。谢谢!