我以这样的方式创建Cesium.Primitive:
_createPrimitive: function (linesNumber) {
var instances = [];
for (var i = 0; i < linesNumber; i++) {
var lon = _.random(-90, 90);
var lat = _.random(-180, 180);
var polyline = new Cesium.SimplePolylineGeometry({
positions: Cesium.Cartesian3.fromDegreesArrayHeights([
lat, lon, 0,
lat, lon, 2000000])
});
var geometry = Cesium.SimplePolylineGeometry.createGeometry(polyline);
instances.push(new Cesium.GeometryInstance({
geometry: geometry,
attributes: {
color: Cesium.ColorGeometryInstanceAttribute.fromColor(Cesium.Color.fromRandom({alpha: 1}))
}
}));
}
return new Cesium.Primitive({
geometryInstances: instances,
appearance: new Cesium.PerInstanceColorAppearance()
});
},然后再添加到场景中:
scene.primitives.add(this._createPrimitive(20000));
它如预期的那样工作。我想改变polyline的宽度。我将Cesium.SimplePolylineGeometry更改为Cesium.PolylineGeometry,并在Cesium.PolylineGeometry构造函数调用中添加width param:
_createPrimitive: function (linesNumber) {
var instances = [];
for (var i = 0; i < linesNumber; i++) {
var lon = _.random(-90, 90);
var lat = _.random(-180, 180);
var polyline = new Cesium.PolylineGeometry({
positions: Cesium.Cartesian3.fromDegreesArrayHeights([
lat, lon, 0,
lat, lon, 2000000]),
width: 4
});
var geometry = Cesium.PolylineGeometry.createGeometry(polyline);
instances.push(new Cesium.GeometryInstance({
geometry: geometry,
attributes: {
color: Cesium.ColorGeometryInstanceAttribute.fromColor(Cesium.Color.fromRandom({alpha: 1}))
}
}));
}
return new Cesium.Primitive({
geometryInstances: instances,
appearance: new Cesium.PerInstanceColorAppearance()
});
},地球是空的!我做错了什么?
发布于 2016-06-02 08:50:17
问题是,我使用了不适当的appearance:Cesium.PolylineColorAppearance,例如,工作得很好:
return new Cesium.Primitive({
geometryInstances: instances,
appearance: new Cesium.PolylineColorAppearance()
});https://stackoverflow.com/questions/37572246
复制相似问题