cesium绘制路线,实现三维漫游

该代码示例展示了如何在Cesium三维地球中通过鼠标点击添加点和线,构建折线,并计算折线中心点。当右键结束绘制时,判断绘制方向。之后,实现点击飞行功能,包括设置飞行时间和动态调整相机视角。此外,还包含了计算两点间方位角的辅助函数。

1.鼠标点击添加点和线

handler.setInputAction(function (event) {
   
   
        //返回地球表面上的点坐标
        const earthPosition = positionUtil.cartesian2ToCartesian3(event.position)
        if (Cesium.defined(earthPosition)) {
   
   
            const ellipsoid = viewer.scene.globe.ellipsoid;
            const cartographic = ellipsoid.cartesianToCartographic(earthPosition);
            const lon = Cesium.Math.toDegrees(cartographic.longitude);
            const lat = Cesium.Math.toDegrees(cartographic.latitude);
            const alt = cartographic.height + 20 // 高度加20
            AddPoint({
   
   
                lon,
                lat,
                alt,
                color: Cesium.Color.YELLOW
            }, viewer);
            positions.push(Cesium.Cartesian3.fromDegrees(lon, lat, alt))
            positons2.push({
   
   x:lon,y:lat,z:alt})
            if (positions.length >=2) {
   
   
              if (!polyline)
                polyline = AddPolyline(viewer)
            }
        }
    }, Cesium.ScreenSpaceEventType.LEFT_CLICK);
    // 添加点
const AddPoint = (params, viewer) => {
   
   
  const entity:any = new Cesium.Entity({
   
   
      id:`${
     
     params.lon}`,
      name: '点',
      show: true,
      position: Cesium.Cartesian3.fromDegrees(params.lon, params.lat, params.alt),
      point: new Cesium.PointGraphics({
   
   
          show: true, //是否展示
          pixelSize: 10, //点大小
          color: params.color
      })
  });
  //收集Id
  viewer.entities.add(entity);
  return entity;
}
 // 添加线
 const AddPolyline = (viewer) => {
   
   
  const entity = new Cesium.Entity({
   
   
      id:`${
     
     new Date().getTime()}线`,
      name: '线',
      polyline: new Cesium.PolylineGraphics({
   
   
          show: true
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值