我试图在Cesium地图上放置数千个点,并遇到Firefox崩溃的问题。我必须使用Firefox。该地图似乎可以显示15,000点(作为图像)。但是,它几乎也不可用。缩放和平移具有巨大的延迟,最终会崩溃。有人知道极限应该是多少点吗?另外,有没有比我做的更好的方式来显示这些点?我真的希望是我而不是铯。我听说创建czml,然后将其传递比较慢,所以我进行了以下JavaScript测试:
function test(){
for (var i=0; i<15000; i++){
tempLat +=1;
tempLon +=1;
if(tempLat>90){
tempLat=0;
tempLon=0;
}
addBillboard(scene, ellipsoid, tempLat,tempLon);
}
}
//this is from the sandcastle examples for cesium.
function addBillboard(scene, ellipsoid,tempLat,tempLon) {
var primitives = scene.primitives;
var image = new Image();
image.onload = function() {
var billboards = new Cesium.BillboardCollection();
var textureAtlas = scene.context.createTextureAtlas({image : image});
billboards.textureAtlas = textureAtlas;
billboard = billboards.add({
position : ellipsoid.cartographicToCartesian(Cesium.Cartographic.fromDegrees(tempLat, tempLon)),
imageIndex : 0
});
primitives.add(billboards);
};
image.src = '../images/Cesium_Logo_overlay.png';
}
您的代码正在创建15,000个BillboardCollection
基元,每个基元各一个Billboard
。如果创建一个并向该集合中BillboardCollection
添加15,000 Billboards
,则性能会好得多。
这是可以与b28发行版一起使用的工作示例。将此内容粘贴到b28沙堡中:http ://cesiumjs.org/releases/b28/Apps/Sandcastle/index.html?src=Billboards.html&label= Showcases
请注意,其中一些API将在即将发布的版本中进行更改。始终检查CHANGES.md以获取重大更改的列表。
require(['Cesium'], function(Cesium) {
"use strict";
var viewer = new Cesium.Viewer('cesiumContainer');
var scene = viewer.scene;
var primitives = scene.primitives;
var ellipsoid = viewer.scene.globe.ellipsoid;
var billboards = new Cesium.BillboardCollection();
var image = new Image();
image.onload = function() {
var textureAtlas = scene.createTextureAtlas({image : image});
billboards.textureAtlas = textureAtlas;
primitives.add(billboards);
};
image.src = '../images/Cesium_Logo_overlay.png';
function addBillboard(tempLat, tempLon) {
billboards.add({
position : ellipsoid.cartographicToCartesian(Cesium.Cartographic.fromDegrees(tempLat, tempLon)),
imageIndex : 0
});
}
var tempLat = 0;
var tempLon = 0;
for (var i = 0; i < 15000; i++){
tempLat += 1;
tempLon += 1;
if (tempLat > 90){
tempLat = 0;
tempLon = 0;
}
addBillboard(tempLat, tempLon);
}
Sandcastle.finishedLoading();
});
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句