Cesium 之 Polyline

本文探讨了Cesium中使用entities和czml创建3D地理图形的区别。entities主要用于单个实体的创建和控制,如红线上显示的文本标签;而czml则适合批量数据的导入,用于描绘路径。通过示例代码展示了如何使用entities创建线段,并使用czml绘制多段线。作者表示对两者差异仍有待深入理解。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1. 使用entities创建

var viewer = new Cesium.Viewer("cesiumContainer");

let a = Cesium.Cartesian3.fromDegrees(116.445663,39.984186) 
let b = Cesium.Cartesian3.fromDegrees(116.611238,40.001875) 
let c = Cesium.Cartesian3.fromDegreesArray([116.445663,39.984186,116.611238,40.001875])

var redLine = viewer.entities.add({
  
  name: "Red line on terrain",
  position:a,
  polyline: {
    show:false,
    positions: c,
    width: 5,
    material: Cesium.Color.RED,
    clampToGround: true,
  },
  label:{
    text:"测试"
  }
});
//-75, 35, -125, 35, -125, 37,-75, 37

setTimeout(()=>{
  redLine.polyline.show=true
},2000)
console.log(c)
console.log(Cesium.Cartesian3.fromDegreesArray([-75, 35, -125, 35, -125, 37,-75, 37]))

viewer.zoomTo(viewer.entities);

2. 使用czml创建

this.ljCzml = new Czml({
       name: 'ljCzml',
       isHeight: false
})
paths.forEach((_item,_idx)=>{
      if(_idx<item.path.length-1){
            let start = this.LngLatPoint.toGPSPoint(_item.lng, _item.lat)
            let end =this.LngLatPoint.toGPSPoint(item.path[_idx+1].lng, item.path[_idx+1].lat)
                  //绘制线
                   let obj = {
                         id:'line_'+_idx,
                         name:'redline_'+_idx,
                         polyline : {
                                positions : {
                                       cartographicDegrees : [start.lng,start.lat, 0, end.lng,end.lat, 0]
                                },
                                material: {
                                        solidColor: {
                                            color: {
                                                rgba: [255, 0, 0, 255],
                                            },
                                        },
                                 },
                                 width :4,
                                clampToGround : true,
                          }
                  }//obj结束
                            
                  czml.push(obj)
          }//if结束
})//forEach结束

this.ljCzml.load(czml)

本周疑问,czml和entities 到底有何不同,还是不太理解,待深入学习

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值