cesium real-time target tracking (connection effect)

Insert image description here

1. Add two moving entities (the parameter property is explained in cesium entity and timeline association (adding motion trajectories) )

let entity = viewer.entities.add({
    
    
        availability : new Cesium.TimeIntervalCollection([new Cesium.TimeInterval({
    
    
          start: Cesium.JulianDate.fromDate(new Date("2023-05-21 08:00:00")),
          stop: Cesium.JulianDate.fromDate(new Date("2023-05-21 12:00:00"))
        })]),
        position: property,
        orientation : new Cesium.VelocityOrientationProperty(property),
        model: {
    
    
            uri: "/static/Cesium_Air.glb",
            minimumPixelSize: 128,
            maximumScale: 20000,
        },
      })
 let entity1 = viewer.entities.add({
    
    
   availability : new Cesium.TimeIntervalCollection([new Cesium.TimeInterval({
    
    
     start: Cesium.JulianDate.fromDate(new Date("2023-05-21 08:00:00")),
     stop: Cesium.JulianDate.fromDate(new Date("2023-05-21 12:00:00"))
   })]),
   position: property1,
   orientation : new Cesium.VelocityOrientationProperty(property1),
   model: {
    
    
       uri: "/static/Cesium_Air.glb",
       color: Cesium.Color.RED,
       minimumPixelSize: 128,
       maximumScale: 20000,
   },
 })

2. Add a connection between two entities (using the polyline method)

Cesium provides a CallbackProperty method that can actually refresh the data.

Insert image description here

viewer.entities.add({
    
    
        polyline: {
    
    
          positions: new Cesium.CallbackProperty(function (time, result) {
    
    
              var sourpos = entity.position.getValue(time);
              var cartographic1 = Cesium.Ellipsoid.WGS84.cartesianToCartographic(sourpos);
              var lon1 = Cesium.Math.toDegrees(cartographic1.longitude);
              var lat1 = Cesium.Math.toDegrees(cartographic1.latitude);
              var height1 = cartographic1.height;

              var tarpos = entity1.position.getValue(time);
              var cartographic = Cesium.Ellipsoid.WGS84.cartesianToCartographic(tarpos);
              var lon2 = Cesium.Math.toDegrees(cartographic.longitude);
              var lat2 = Cesium.Math.toDegrees(cartographic.latitude);
              var height2 = cartographic.height;
              return  Cesium.Cartesian3.fromDegreesArrayHeights([lon1,lat1,height1,lon2, lat2, height2])
            }, false),
          width: 5,
          material: Cesium.Color.RED,
        },
      })

Guess you like

Origin blog.csdn.net/weixin_46730573/article/details/130797810