Cesium - 更新特定实体材料时所有实体都会闪烁

时间:2016-12-01 02:50:02

标签: cesium

这类似于Updating Cesium Callback Property causes the entity to flash

我已经创建了一个"网格"多边形单击单个多边形时,会将该多边形变为红色。但是,所有其他实体" flash"同时。

似乎这更像是一个性能问题,因为我可以看到所有实体在更新时都会重新绘制。当材料颜色的α<1时,这更加明显。 1.

有更好的方法吗?是否有我应该使用的集合类型?

var viewer = new Cesium.Viewer('cesiumContainer', {});
var scene = viewer.scene;

var handler = new Cesium.ScreenSpaceEventHandler(viewer.scene.canvas);

handler.setInputAction(function(click) {      
    var primitive;    
    var obj = viewer.scene.pick(click.position);

    if (obj) {
        primitive = obj.primitive;      
        var entity = obj.id;
        entity.polygon.material =  Cesium.Color.RED.withAlpha(0.5);                                         
    } 
}, Cesium.ScreenSpaceEventType.LEFT_CLICK);


var lon = -157;
var lat = 45;

var inc = 8/49;
for(var lonidx = 0; lonidx <  8 * 3; lonidx++) {            
    for(var latidx  = 0; latidx  <  8 * 3 ; latidx++) {

        var glat = lat + latidx / 3;
        var glon = lon + lonidx / 3;


        viewer.entities.add({
            name : glon + ',' + glat,
            polygon : {
                hierarchy : Cesium.Cartesian3.fromDegreesArray([
                   glon - inc, glat + inc, 
                   glon + inc, glat + inc,
                   glon + inc, glat - inc,
                   glon - inc, glat - inc,
                   glon - inc, glat + inc]),
                material : Cesium.Color.WHITE.withAlpha(0.5),
                outline : true,
                outlineColor : Cesium.Color.BLACK,
                height: 0
            }
        });
    }
}

scene.camera.flyTo({destination : Cesium.Cartesian3.fromDegrees(lon + 0.5, lat + 0.5, 1500000.0)});

0 个答案:

没有答案