[Cesium] 使用primitive绘制多段线

cesium里面绘制点线面可以通过entity或者primitive。今天先记录下使用primitive绘制线的代码

      //创建多段线和每段颜色
      let startLng = 100.96366875932624;
      let startLat = 37.466150138169006;

      const positions = [];
      const colors = [];
      for (let j = 0; j <= 50; j += 5) {
          positions.push(
              Cesium.Cartesian3.fromDegrees(startLng + j, startLat, 50000.0 * (j % 10))
          );
          colors.push(Cesium.Color.fromRandom({ alpha: 1.0 }));
      }
      //设置线段的位置和颜色,一一对应,arcType为ArcType.NONE
      const perSegmentPolyline = new Cesium.GeometryInstance({
          geometry: new Cesium.SimplePolylineGeometry({
              positions: positions,
              colors: colors,
              arcType: Cesium.ArcType.NONE,
          }),
      });
      //使用逐顶点着色绘制多段线
      //对于逐顶点着色,将colorsPerVertex选项设置为true,并为colors选项提供长度等于位置数的颜色数组
      const perVertexPolyline = new Cesium.GeometryInstance({
        geometry: new Cesium.SimplePolylineGeometry({
            positions: Cesium.Cartesian3.fromDegreesArray([-100, 40, -80, 30]),
            colors: [Cesium.Color.RED, Cesium.Color.BLUE],
            colorsPerVertex: true,
        }),
      });
      //添加多段线instances到primitives
      this.viewer.scene.primitives.add(
          new Cesium.Primitive({
              geometryInstances: [perSegmentPolyline, perVertexPolyline],
              appearance: new Cesium.PerInstanceColorAppearance({
                  flat: true,
                  renderState: {
                      lineWidth: Math.min(2.0, this.viewer.scene.maximumAliasedLineWidth),
                  },
              }),
          })
      );

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

程老师2088

您的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值