Цезий - все сущности мигают при обновлении специального материала сущности
Это похоже на Обновление свойства обратного вызова Cesium, заставляющего объект мигать
Я создал "сетку" полигонов. При нажатии на отдельный многоугольник, он становится красным. Однако все остальные объекты "вспыхивают" одновременно.
Кажется, что это больше проблема производительности, потому что я вижу, что все сущности перерисовываются при обновлении. Это более заметно, когда альфа для цвета материала < 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)});