Cesium-PrimitiveCollection

  PrimitiveCollection

    是一个Primitive的集合,但是PrimitiveCollection本身也是一个Primitive,所以PrimitiveCollection 允许添加集合中,形成层次结构

      viewer到entity的关系:
        Viewer ==> DataSourceDisplay ==> DataSourceCollection ==> CustomDataSource ==> EntityCollection (entities)==> Entity

            将entity加入地球:

                viewer.entities.add(entity)

      viewer到primitive的关系

        Viewer ==> Scene ==> PrimitiveCollection(primitives) ==> primitive / primitives

            将primitive加入地球

                viewer.scene.primitives.add(primitive/primitivecollection)

 

 示例:

  var dataS = new Cesium.PrimitiveCollection() // 申明一个primitive集合
      dataS.name = 'primitive11'  // 给primitive集合设置一个名字
      viewer.scene.primitives.add(dataS) // 将集合加入到地球上

    加点:

      let  points = new Cesium.PointPrimitiveCollection()   // 点集合

      dataS.add(points) // 将点集合加入到primitive集合里

                      // points.add(PointPrimitive)

      points.add({

        position:new Cesium.Cartesian3(1.0,2.0,3.0),

        color:Cesium.Color.YELLOW

      })

    加线:

      dataS.add(

        new Cesium.Primitive({

          geometryInstances:instances,

          appearance:new Cesium.PolylineMaterialAppearance({

            material: Cesium.Material.fromType('Color',{

              color:Cesium.Color.HOTPINK

            })

          })

        })

      )

      var polylineInstance= new Cesium.GeometryInstance({

        geometry:new Cesium.PolylineGeometry({

          positions:position,

          width:3

        })

      })

      instances.push(polylineInstance)  // 给预设的GeometryInstance数组加新的GeometryInstance,自己就可以再渲染新的primitive,我不理解,但是有用。

    加面:

      dataS.add(

        new Cesium.Primitive({

          geometryInstance:instances,

          appearance:new Cesium.PerInstanceColorAppearance({

            flat:true,

            translucent:false

          })

        })

      )

      dataS.add(

        new Cesium.Primitive({

          geometryInstance:Instances1,

          appearance:new Cesium.PerInstanceColorAppearance({

            flat:true,

            translucent:false

          })

        })

      )

      var polylineInstance = new Cesium.GeometryInstance({

        geometry:new Cesium.PolygonGeometry({

            polygonHierarchy:hierarchy

          })

        attributes: {                  

          color: Cesium.ColorGeometryInstanceAttribute.fromColor(color),                  

          distanceDisplayCondition:new Cesium.DistanceDisplayConditionGeometryInstanceAttribute(near, far)                

        }

      })

      var polylineInstance1 = new Cesium.GeometryInstance({

        geometry:new Cesium.PolygonOutlineGeometry({

            polygonHierarchy:hierarchy

          })

        attributes: {                  

          color: Cesium.ColorGeometryInstanceAttribute.fromColor(color),                  

          distanceDisplayCondition:new Cesium.DistanceDisplayConditionGeometryInstanceAttribute(near, far)                

        }

      })

      instances.push(polylineInstance)

      instances1.push(polylineInstance1)

 

示例代码:data-center-admin里面的setMapLayer 自己看。。。。

posted on 2022-04-16 17:07  zhanlanzzz  阅读(2469)  评论(0)    收藏  举报