2016-06-01 14 views
2

ich Cesium.Primitive in einer solchen Art und Weise zu erstellen:Cäsium.PolylineGeometry funktioniert nicht. Cesium.SimplePolylineGeometry tut

_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() 
     }); 
    }, 

und fügen Sie ihn in Szene später:

scene.primitives.add(this._createPrimitive(20000));

Es funktioniert wie erwartet. Ich möchte die Breite der Polylinie ändern. Ich wechsle Cesium.SimplePolylineGeometry-Cesium.PolylineGeometry und width param zu Cesium.PolylineGeometry Konstruktoraufruf hinzufügen:

_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() 
     }); 
    }, 

und die Welt ist leer! Was mache ich falsch?

Antwort

2

Das Problem war, ich unpassend verwendet appearance: Cesium.PolylineColorAppearance zum Beispiel funktioniert:

return new Cesium.Primitive({ 
     geometryInstances: instances, 
     appearance: new Cesium.PolylineColorAppearance() 
    });