2016-06-01 2 views
2

je crée Cesium.Primitive de telle manière:Cesium.PolylineGeometry ne fonctionne pas. Cesium.SimplePolylineGeometry ne

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

et l'ajouter à la scène plus tard:

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

Il fonctionne comme prévu. Je veux changer la largeur de la polyligne. Je change Cesium.SimplePolylineGeometry-Cesium.PolylineGeometry et ajouter à width param Cesium.PolylineGeometry appel constructeur:

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

et le monde est vide! Qu'est-ce que je fais mal?

Répondre

2

Le problème était je inappropriée appearance: Cesium.PolylineColorAppearance par exemple fonctionne très bien:

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