Cesium 使用时间序列事件模拟飞机的各种状态

1.时间序列事件

2.飞机路径数据

3.飞机路径数据修改

4.使用kml生成飞机

5.时间序列事件修改飞机状态

//事件
    viewer.clock.onTick.addEventListener(onTick);
    viewer.clock.onStop.addEventListener(onStop);


 //事件方法    
    function onTick(clock) {
      var currentTime = viewer.clock.currentTime;
      if (viewer.clock.shouldAnimate === true) {
        // console.log("时间:"+ currentTime);

        // 检查每个事件的时间
        for (var i = 0; i < temp.length; i++) {
          var event = temp[i];
          // 判断当前时间是否达到事件的时间
          if (Cesium.JulianDate.greaterThanOrEquals(currentTime, event.time)) {
            console.log("事件:" + event.time);
            // 执行事件
            event.action();

            // 可选择取消事件执行,以避免重复执行
            temp.splice(i, 1); // 从事件列表中移除已执行的事件
          }
        }

        // 如果所有事件都已执行完毕,可以选择停止监听onTick事件
        if (temp.length === 0) {
          viewer.clock.onTick.removeEventListener(arguments.callee); //
        }
        //ParticleShowOrFalse(true);
      }
    }
    //事件停止
    function onStop(clock) {
      console.log("时间轴播放完成时候");
      temp = [...events];
      viewer.clock.onTick.addEventListener(onTick)
      //ParticleShowOrFalse(false);
    }





 var PLANE_SPEED = 200; //飞机速度
    //规划路径数据
    var pathliene = [{
      "lng": 116.5845,
      "lat": 40.08010000000001,
      "hig": -1.3969838619232178e-9
    },
    {
      "lng": 116.58330144997416,
      "lat": 40.0750962293721,
      "hig": 2540.095426488378
    },
    {
      "lng": 116.58131546760663,
      "lat": 40.06680339805726,
      "hig": 5075.261690593189
    },
    {
      "lng": 116.57855580287676,
      "lat": 40.055276505653644,
      "hig": 7604.963387137395
    },
    {
      "lng": 116.57503638440015,
      "lat": 40.04057042986108,
      "hig": 10128.724100701238
    },
    {
      "lng": 116.57077130592056,
      "lat": 40.02273992568703,
      "hig": 12646.122988035777
    },
    {
      "lng": 116.56577481297924,
      "lat": 40.001839624988726,
      "hig": 15156.791422304437
    },
    {
      "lng": 116.56006128977799,
      "lat": 39.97792403631499,
      "hig": 17660.40969906735
    },
    {
      "lng": 116.55364524625115,
      "lat": 39.9510475450135,
      "hig": 20156.703803861958
    },
    {
      "lng": 116.54654130536126,
      "lat": 39.92126441357089,
      "hig": 22645.442241208275
    },
    {
      "lng": 116.53876419063116,
      "lat": 39.888628782154704,
      "hig": 25126.432924893863
    },
    {
      "lng": 116.53032871392534,
      "lat": 39.85319466932847,
      "hig": 27599.52012931344
    },
    {
      "lng": 116.52124976349211,
      "lat": 39.81501597291232,
      "hig": 30064.581501668985
    },
    {
      "lng": 116.51154229227662,
      "lat": 39.774146470963615,
      "hig": 32521.525134848616
    },
    {
      "lng": 116.50122130651494,
      "lat": 39.73063982285336,
      "hig": 34970.286700725745
    },
    {
      "lng": 116.490301854618,
      "lat": 39.68454957041608,
      "hig": 37410.82664367116
    },
    {
      "lng": 116.47879901635247,
      "lat": 39.63592913915216,
      "hig": 39843.12743406521
    },
    {
      "lng": 116.46672789232656,
      "lat": 39.5848318394631,
      "hig": 42267.19088156064
    },
    {
      "lng": 116.4541035937865,
      "lat": 39.53131086790178,
      "hig": 44683.03550787272
    },
    {
      "lng": 116.44094123272845,
      "lat": 39.47541930842107,
      "hig": 47090.693978871546
    },
    {
      "lng": 116.42725591233174,
      "lat": 39.417210133605465,
      "hig": 49490.21059576054
    },
    {
      "lng": 116.41306271771555,
      "lat": 39.356736205872174,
      "hig": 51881.63884509159
    },
    {
      "lng": 116.39837670702352,
      "lat": 39.29405027862834,
      "hig": 54265.039007406194
    },
    {
      "lng": 116.38321290283736,
      "lat": 39.229204997373785,
      "hig": 56640.47582430411
    },
    {
      "lng": 116.36758628392197,
      "lat": 39.162252900738515,
      "hig": 59008.016223678125
    },
    {
      "lng": 116.3515117773025,
      "lat": 39.09324642144624,
      "hig": 61367.72710296311
    },
    {
      "lng": 116.33500425067353,
      "lat": 39.022237887195935,
      "hig": 63719.673170131784
    },
    {
      "lng": 116.3180785051405,
      "lat": 38.94927952145461,
      "hig": 66063.91484228328
    },
    {
      "lng": 116.3007492682919,
      "lat": 38.87442344415557,
      "hig": 68400.50620159587
    },
    {
      "lng": 116.28303118760145,
      "lat": 38.79772167229743,
      "hig": 70729.4930084516
    },
    {
      "lng": 116.26493882415753,
      "lat": 38.719226120440105,
      "hig": 73050.91077155477
    },
    {
      "lng": 116.24648664671798,
      "lat": 38.638988601095015,
      "hig": 75364.78287482931
    },
    {
      "lng": 116.22768902608703,
      "lat": 38.55706082500742,
      "hig": 77671.1187609393
    },
    {
      "lng": 116.20856022981121,
      "lat": 38.47349440133022,
      "hig": 79969.91217121051
    },
    {
      "lng": 116.18911441719015,
      "lat": 38.38834083768847,
      "hig": 82261.1394418026
    },
    {
      "lng": 116.1693656345987,
      "lat": 38.301651540135765,
      "hig": 84544.75785591449
    },
    {
      "lng": 116.14932781111534,
      "lat": 38.21347781300357,
      "hig": 86820.70405190269
    },
    {
      "lng": 116.12901475445236,
      "lat": 38.12387085864567,
      "hig": 89088.89248702428
    },
    {
      "lng": 116.10844014718289,
      "lat": 38.03288177708047,
      "hig": 91349.21395674285
    },
    {
      "lng": 116.08761754325907,
      "lat": 37.94056156553493,
      "hig": 93601.53416932674
    },
    {
      "lng": 116.06656036481638,
      "lat": 37.84696111789384,
      "hig": 95845.69237557401
    },
    {
      "lng": 116.04528189925774,
      "lat": 37.75213122405949,
      "hig": 98081.50005351067
    },
    {
      "lng": 116.0237952966118,
      "lat": 37.65612256922688,
      "hig": 100308.73964781986
    },
    {
      "lng": 116.00211356715943,
      "lat": 37.558985733080405,
      "hig": 102527.1633638301
    },
    {
      "lng": 115.98024957932196,
      "lat": 37.460771188918265,
      "hig": 104736.49201587362
    },
    {
      "lng": 115.9582160578048,
      "lat": 37.361529302711595,
      "hig": 106936.41392979222
    },
    {
      "lng": 115.93602558199031,
      "lat": 37.26131033210545,
      "hig": 109126.5838993761
    },
    {
      "lng": 115.91369058457298,
      "lat": 37.16016442536944,
      "hig": 111306.62219656262
    },
    {
      "lng": 115.8912233504308,
      "lat": 37.05814162030609,
      "hig": 113476.1136351002
    },
    {
      "lng": 115.86863601572625,
      "lat": 36.95529184312544,
      "hig": 115634.60668752456
    },
    {
      "lng": 115.84594056722953,
      "lat": 36.8516649072946,
      "hig": 117781.61265516748
    },
    {
      "lng": 115.82314884185872,
      "lat": 36.74731051237139,
      "hig": 119916.60489096095
    },
    {
      "lng": 115.80027252642931,
      "lat": 36.64227824283154,
      "hig": 122039.01807480154
    },
    {
      "lng": 115.77732315760676,
      "lat": 36.53661756689887,
      "hig": 124148.24754121
    },
    {
      "lng": 115.75431212205618,
      "lat": 36.43037783538853,
      "hig": 126243.6486590133
    },
    {
      "lng": 115.73125065678167,
      "lat": 36.32360828057322,
      "hig": 128324.53626278038
    },
    {
      "lng": 115.70814984965024,
      "lat": 36.216358015082584,
      "hig": 130390.18413573576
    },
    {
      "lng": 115.68502064009269,
      "lat": 36.10867603084626,
      "hig": 132439.82454386452
    },
    {
      "lng": 115.66187381997668,
      "lat": 36.000611198090965,
      "hig": 134472.64782087633
    },
    {
      "lng": 115.63872003464465,
      "lat": 35.89221226440226,
      "hig": 136487.80200378894
    },
    {
      "lng": 115.61556978411176,
      "lat": 35.78352785386162,
      "hig": 138484.39251873066
    },
    {
      "lng": 115.5924334244171,
      "lat": 35.67460646626959,
      "hig": 140461.48191672884
    },
    {
      "lng": 115.56932116912334,
      "lat": 35.56549647646547,
      "hig": 142418.08965908538
    },
    {
      "lng": 115.54624309095871,
      "lat": 35.45624613375496,
      "hig": 144353.19195205322
    },
    {
      "lng": 115.5232091235961,
      "lat": 35.34690356145556,
      "hig": 146265.72163042697
    },
    {
      "lng": 115.50022906356426,
      "lat": 35.237516756571345,
      "hig": 148154.56808975324
    },
    {
      "lng": 115.47731257228565,
      "lat": 35.12813358960702,
      "hig": 150018.5772667443
    },
    {
      "lng": 115.45446917823658,
      "lat": 35.01880180453243,
      "hig": 151856.5516676005
    },
    {
      "lng": 115.43170827922454,
      "lat": 34.90956901890764,
      "hig": 153667.25044381345
    },
    {
      "lng": 115.40903914477786,
      "lat": 34.80048272417919,
      "hig": 155449.38951514507
    },
    {
      "lng": 115.38647091864458,
      "lat": 34.691590286157705,
      "hig": 157201.64173936984
    },
    {
      "lng": 115.36401262139472,
      "lat": 34.58293894568707,
      "hig": 158922.6371284151
    },
    {
      "lng": 115.3416731531233,
      "lat": 34.47457581951519,
      "hig": 160610.96311055048
    },
    {
      "lng": 115.31946129624961,
      "lat": 34.36654790137631,
      "hig": 162265.16483822154
    },
    {
      "lng": 115.29738571840932,
      "lat": 34.258902063294045,
      "hig": 163883.7455411736
    },
    {
      "lng": 115.2754549754359,
      "lat": 34.15168505711563,
      "hig": 165465.1669244849
    },
    {
      "lng": 115.25367751442869,
      "lat": 34.04494351628556,
      "hig": 167007.84961116512
    },
    {
      "lng": 115.23206167690344,
      "lat": 33.938723957868675,
      "hig": 168510.17362889482
    },
    {
      "lng": 115.21061570202396,
      "lat": 33.83307278483107,
      "hig": 169970.47894062038
    },
    {
      "lng": 115.18934772991103,
      "lat": 33.72803628858769,
      "hig": 171387.0660186089
    },
    {
      "lng": 115.168265805027,
      "lat": 33.62366065182521,
      "hig": 172758.19646160858
    },
    {
      "lng": 115.14737787963328,
      "lat": 33.5199919516082,
      "hig": 174082.09365479986
    },
    {
      "lng": 115.12669181731913,
      "lat": 33.41707616277686,
      "hig": 175356.94347220808
    },
    {
      "lng": 115.10621539659978,
      "lat": 33.31495916164396,
      "hig": 176580.89502123758
    },
    {
      "lng": 115.0859563145823,
      "lat": 33.2136867299986,
      "hig": 177752.06142905095
    },
    {
      "lng": 115.06592219069773,
      "lat": 33.113304559424066,
      "hig": 178868.52067049162
    },
    {
      "lng": 115.04612057049859,
      "lat": 33.013858255936896,
      "hig": 179928.31643725623
    },
    {
      "lng": 115.02655892952046,
      "lat": 32.91539334495398,
      "hig": 180929.45904811533
    },
    {
      "lng": 115.00724467720713,
      "lat": 32.81795527659423,
      "hig": 181869.92639985422
    },
    {
      "lng": 114.98818516089851,
      "lat": 32.72158943132121,
      "hig": 182747.66495881358
    },
    {
      "lng": 114.96938766988134,
      "lat": 32.626341125932846,
      "hig": 183560.59079274797
    },
    {
      "lng": 114.95085943950227,
      "lat": 32.53225561990393,
      "hig": 184306.59064289008
    },
    {
      "lng": 114.93260765534328,
      "lat": 32.43937812208723,
      "hig": 184983.52303601764
    },
    {
      "lng": 114.91463945746035,
      "lat": 32.34775379777844,
      "hig": 185589.21943644824
    },
    {
      "lng": 114.8969619446853,
      "lat": 32.25742777615015,
      "hig": 186121.4854378166
    },
    {
      "lng": 114.87958217899165,
      "lat": 32.16844515805968,
      "hig": 186578.1019946196
    },
    {
      "lng": 114.86250718992603,
      "lat": 32.0808510242355,
      "hig": 186956.82669344876
    },
    {
      "lng": 114.84574397910548,
      "lat": 31.994690443846697,
      "hig": 187255.39506391977
    },
    {
      "lng": 114.8292995247828,
      "lat": 31.910008483459546,
      "hig": 187471.52192935065
    },
    {
      "lng": 114.81318078648114,
      "lat": 31.826850216385346,
      "hig": 187602.90279722709
    },
    {
      "lng": 114.79739470970013,
      "lat": 31.745260732423063,
      "hig": 187647.21528959027
    },
    {
      "lng": 114.7816364250567,
      "lat": 31.663669305849638,
      "hig": 187602.90279722676
    },
    {
      "lng": 114.76560321445724,
      "lat": 31.58050506057067,
      "hig": 187471.52192934873
    },
    {
      "lng": 114.74930520427742,
      "lat": 31.49581286404641,
      "hig": 187255.39506391808
    },
    {
      "lng": 114.73275246914454,
      "lat": 31.409637571844833,
      "hig": 186956.82669344931
    },
    {
      "lng": 114.71595503130368,
      "lat": 31.322024037757316,
      "hig": 186578.10199461956
    },
    {
      "lng": 114.69892286004499,
      "lat": 31.233017123510212,
      "hig": 186121.4854378159
    },
    {
      "lng": 114.68166587118989,
      "lat": 31.14266170807604,
      "hig": 185589.2194364473
    },
    {
      "lng": 114.66419392663666,
      "lat": 31.051002696588924,
      "hig": 184983.52303601935
    },
    {
      "lng": 114.64651683396346,
      "lat": 30.958085028868133,
      "hig": 184306.5906428917
    },
    {
      "lng": 114.62864434608849,
      "lat": 30.863953687554545,
      "hig": 183560.59079274794
    },
    {
      "lng": 114.6105861609867,
      "lat": 30.76865370586497,
      "hig": 182747.6649588137
    },
    {
      "lng": 114.5923519214613,
      "lat": 30.67223017496898,
      "hig": 181869.92639985436
    },
    {
      "lng": 114.57395121497018,
      "lat": 30.574728250993726,
      "hig": 180929.4590481153
    },
    {
      "lng": 114.55539357350605,
      "lat": 30.4761931616622,
      "hig": 179928.31643725687
    },
    {
      "lng": 114.53668847352917,
      "lat": 30.37667021257052,
      "hig": 178868.52067049145
    },
    {
      "lng": 114.5178453359523,
      "lat": 30.276204793110146,
      "hig": 177752.0614290508
    },
    {
      "lng": 114.49887352617696,
      "lat": 30.174842382041273,
      "hig": 176580.89502123726
    },
    {
      "lng": 114.47978235418,
      "lat": 30.07262855272362,
      "hig": 175356.9434722099
    },
    {
      "lng": 114.46058107464997,
      "lat": 29.969608978011248,
      "hig": 174082.0936548007
    },
    {
      "lng": 114.44127888717216,
      "lat": 29.86582943481831,
      "hig": 172758.19646160878
    },
    {
      "lng": 114.42188493646215,
      "lat": 29.761335808362677,
      "hig": 171387.0660186103
    },
    {
      "lng": 114.40240831264632,
      "lat": 29.656174096094734,
      "hig": 169970.47894062166
    },
    {
      "lng": 114.38285805158925,
      "lat": 29.55039041131885,
      "hig": 168510.17362889304
    },
    {
      "lng": 114.36324313526711,
      "lat": 29.444030986515255,
      "hig": 167007.84961116622
    },
    {
      "lng": 114.34357249218603,
      "lat": 29.337142176370264,
      "hig": 165465.16692448725
    },
    {
      "lng": 114.32385499784525,
      "lat": 29.229770460522957,
      "hig": 163883.74554117213
    },
    {
      "lng": 114.30409947524396,
      "lat": 29.121962446036687,
      "hig": 162265.16483821988
    },
    {
      "lng": 114.28431469543162,
      "lat": 29.013764869604067,
      "hig": 160610.96311055208
    },
    {
      "lng": 114.26450937810053,
      "lat": 28.90522459949412,
      "hig": 158922.63712841505
    },
    {
      "lng": 114.24469219222055,
      "lat": 28.796388637250466,
      "hig": 157201.64173936952
    },
    {
      "lng": 114.22487175671542,
      "lat": 28.68730411914998,
      "hig": 155449.3895151467
    },
    {
      "lng": 114.20505664117931,
      "lat": 28.57801831743077,
      "hig": 153667.25044381307
    },
    {
      "lng": 114.18525536663435,
      "lat": 28.468578641299523,
      "hig": 151856.55166760192
    },
    {
      "lng": 114.16547640632723,
      "lat": 28.35903263772721,
      "hig": 150018.577266746
    },
    {
      "lng": 114.14572818656548,
      "lat": 28.249427992043604,
      "hig": 148154.56808975333
    },
    {
      "lng": 114.12601908759218,
      "lat": 28.139812528339828,
      "hig": 146265.72163042895
    },
    {
      "lng": 114.10635744449918,
      "lat": 28.030234209689493,
      "hig": 144353.19195205419
    },
    {
      "lng": 114.08675154817793,
      "lat": 27.920741138198256,
      "hig": 142418.08965908806
    },
    {
      "lng": 114.06720964630789,
      "lat": 27.81138155489206,
      "hig": 140461.48191672872
    },
    {
      "lng": 114.04773994438182,
      "lat": 27.70220383945438,
      "hig": 138484.39251873083
    },
    {
      "lng": 114.02835060676792,
      "lat": 27.593256509822723,
      "hig": 136487.80200378975
    },
    {
      "lng": 114.00904975780803,
      "lat": 27.484588221654786,
      "hig": 134472.6478208788
    },
    {
      "lng": 113.9898454829522,
      "lat": 27.37624776767472,
      "hig": 132439.82454386438
    },
    {
      "lng": 113.97074582992862,
      "lat": 27.26828407690968,
      "hig": 130390.18413573613
    },
    {
      "lng": 113.95175880994911,
      "lat": 27.1607462138273,
      "hig": 128324.53626278031
    },
    {
      "lng": 113.93289239895019,
      "lat": 27.05368337738415,
      "hig": 126243.64865901519
    },
    {
      "lng": 113.91415453886869,
      "lat": 26.94714489999559,
      "hig": 124148.2475412116
    },
    {
      "lng": 113.8955531389526,
      "lat": 26.841180246437123,
      "hig": 122039.01807480282
    },
    {
      "lng": 113.87709607710643,
      "lat": 26.735839012687318,
      "hig": 119916.60489096126
    },
    {
      "lng": 113.85879120127132,
      "lat": 26.631170924722262,
      "hig": 117781.6126551689
    },
    {
      "lng": 113.84064633083973,
      "lat": 26.527225837271324,
      "hig": 115634.6066875259
    },
    {
      "lng": 113.82266925810443,
      "lat": 26.424053732543662,
      "hig": 113476.11363510016
    },
    {
      "lng": 113.80486774974217,
      "lat": 26.32170471893523,
      "hig": 111306.62219656349
    },
    {
      "lng": 113.78724954833174,
      "lat": 26.220229029725008,
      "hig": 109126.58389937812
    },
    {
      "lng": 113.76982237390666,
      "lat": 26.11967702176974,
      "hig": 106936.41392979231
    },
    {
      "lng": 113.75259392554236,
      "lat": 26.020099174205576,
      "hig": 104736.49201587321
    },
    {
      "lng": 113.73557188297832,
      "lat": 25.921546087165048,
      "hig": 102527.16336383145
    },
    {
      "lng": 113.71876390827485,
      "lat": 25.824068480517326,
      "hig": 100308.73964782043
    },
    {
      "lng": 113.70217764750534,
      "lat": 25.72771719263941,
      "hig": 98081.50005351224
    },
    {
      "lng": 113.68582073248339,
      "lat": 25.63254317922547,
      "hig": 95845.69237557366
    },
    {
      "lng": 113.66970078252595,
      "lat": 25.53859751214109,
      "hig": 93601.53416932718
    },
    {
      "lng": 113.65382540625203,
      "lat": 25.445931378328996,
      "hig": 91349.2139567432
    },
    {
      "lng": 113.63820220341785,
      "lat": 25.354596078771845,
      "hig": 89088.89248702557
    },
    {
      "lng": 113.62283876678859,
      "lat": 25.264643027517756,
      "hig": 86820.70405190265
    },
    {
      "lng": 113.60774268404705,
      "lat": 25.176123750773286,
      "hig": 84544.75785591576
    },
    {
      "lng": 113.59292153973998,
      "lat": 25.089089886068084,
      "hig": 82261.13944180222
    },
    {
      "lng": 113.57838291726235,
      "lat": 25.003593181495155,
      "hig": 79969.91217121195
    },
    {
      "lng": 113.56413440088019,
      "lat": 24.919685495029512,
      "hig": 77671.11876093951
    },
    {
      "lng": 113.5501835777926,
      "lat": 24.837418793927853,
      "hig": 75364.78287483087
    },
    {
      "lng": 113.53653804023367,
      "lat": 24.756845154210882,
      "hig": 73050.91077155455
    },
    {
      "lng": 113.5232053876147,
      "lat": 24.678016760229298,
      "hig": 70729.49300845282
    },
    {
      "lng": 113.51019322870778,
      "lat": 24.60098590431378,
      "hig": 68400.50620159906
    },
    {
      "lng": 113.49750918387153,
      "lat": 24.525804986508337,
      "hig": 66063.91484228487
    },
    {
      "lng": 113.48516088731928,
      "lat": 24.452526514385774,
      "hig": 63719.673170133545
    },
    {
      "lng": 113.47315598943158,
      "lat": 24.381203102943083,
      "hig": 61367.72710296352
    },
    {
      "lng": 113.46150215911285,
      "lat": 24.311887474573695,
      "hig": 59008.01622367977
    },
    {
      "lng": 113.45020708619407,
      "lat": 24.2446324591126,
      "hig": 56640.47582430592
    },
    {
      "lng": 113.43927848388209,
      "lat": 24.17949099394944,
      "hig": 54265.03900740772
    },
    {
      "lng": 113.4287240912569,
      "lat": 24.116516124203667,
      "hig": 51881.6388450928
    },
    {
      "lng": 113.41855167581762,
      "lat": 24.055761002954917,
      "hig": 49490.21059576064
    },
    {
      "lng": 113.40876903607918,
      "lat": 23.997278891520523,
      "hig": 47090.69397887304
    },
    {
      "lng": 113.39938400422028,
      "lat": 23.94112315977119,
      "hig": 44683.03550787282
    },
    {
      "lng": 113.39040444878422,
      "lat": 23.88734728647468,
      "hig": 42267.19088156273
    },
    {
      "lng": 113.38183827743437,
      "lat": 23.836004859656114,
      "hig": 39843.12743406645
    },
    {
      "lng": 113.37369343976512,
      "lat": 23.7871495769624,
      "hig": 37410.82664367168
    },
    {
      "lng": 113.36597793017053,
      "lat": 23.74083524601703,
      "hig": 34970.28670072708
    },
    {
      "lng": 113.35869979077178,
      "lat": 23.69711578475015,
      "hig": 32521.52513485019
    },
    {
      "lng": 113.3518671144057,
      "lat": 23.656045221687677,
      "hig": 30064.58150167141
    },
    {
      "lng": 113.34548804767553,
      "lat": 23.6176776961816,
      "hig": 27599.520129314613
    },
    {
      "lng": 113.33957079406635,
      "lat": 23.5820674585625,
      "hig": 25126.43292489683
    },
    {
      "lng": 113.33412361712686,
      "lat": 23.549268870193682,
      "hig": 22645.442241209785
    },
    {
      "lng": 113.32915484371962,
      "lat": 23.519336403404928,
      "hig": 20156.703803861823
    },
    {
      "lng": 113.32467286734187,
      "lat": 23.492324641282476,
      "hig": 17660.409699068816
    },
    {
      "lng": 113.32068615151924,
      "lat": 23.468288277289766,
      "hig": 15156.791422305929
    },
    {
      "lng": 113.31720323327448,
      "lat": 23.44728211469286,
      "hig": 12646.122988038067
    },
    {
      "lng": 113.3142327266741,
      "lat": 23.429361065761615,
      "hig": 10128.724100704376
    },
    {
      "lng": 113.3117833264547,
      "lat": 23.414580150716983,
      "hig": 7604.963387139324
    },
    {
      "lng": 113.30986381173253,
      "lat": 23.402994496392484,
      "hig": 5075.261690595192
    },
    {
      "lng": 113.30848304979817,
      "lat": 23.39465933457654,
      "hig": 2540.095426490781
    }
    ]

    //PathChangeButton();
    //按钮点击测试
    function PathChangeButton() {
      var setstarttTime = Cesium.JulianDate.fromDate(tlm.GetDateTime(2023, 11, 29, 8, 6, 0));
      var pathtimeline = PathChangeTimePath(pathliene, PLANE_SPEED, start, stop, setstarttTime, 30);
      console.log("转换完成:", pathtimeline);

      DataCreateModels(pathtimeline);
    }


    //规划路径转换成时间点路径   路径点源数据,飞机速度,任务开始时间,任务结束时间,飞机开始飞行时间,时间
    function PathChangeTimePath(flightData, flyspeed, start, stop, setstarttTime, kongtoutime) {
      let pts = flightData;
      console.log("json数据:", pts);
      if (pts.length > 0) {
        var trail = []; //正向路径
        var backtrail = []; //返航路径

        var timecd = GetColdsecond(setstarttTime, start);
        console.log("设置某一刻时间:", timecd);
        for (let i = 0; i < pts.length; i++) {
          let pt = pts[i];

          if (i === 0) {
            trail.push({
              longitude: pt.lng,
              latitude: pt.lat,
              height: pt.hig,
              time: timecd
            });

          } else if (i > 0) {
            let length = getDistanceBy2PosArr([pt.lng, pt.lat, pt.hig, pts[i - 1].lng, pts[i - 1].lat, pts[i - 1].hig]);
            //console.log("路径点长度:",length);
            let cost = parseFloat(length / flyspeed.toFixed(7));
            timecd += cost;
            trail.push({
              longitude: pt.lng,
              latitude: pt.lat,
              height: pt.hig,
              time: timecd
            });
          }
        }



        timecd += kongtoutime;
        var back = [...pts];
        //返航路径
        var bpts = back.reverse();
        for (let i = 0; i < bpts.length; i++) {
          let pt = bpts[i];
          if (i === 0) {
            backtrail.push({
              longitude: pt.lng,
              latitude: pt.lat,
              height: pt.hig,
              time: timecd
            });
          } else if (i > 0) {
            let length = getDistanceBy2PosArr([pt.lng, pt.lat, pt.hig, bpts[i - 1].lng, bpts[i - 1].lat, bpts[i - 1]
              .hig]);
            //console.log("路径点长度返航:",length);
            let cost = parseFloat(length / flyspeed.toFixed(7));
            timecd += cost;
            backtrail.push({
              longitude: pt.lng,
              latitude: pt.lat,
              height: pt.hig,
              time: timecd
            });
          }
        }

        //总路径路径
        var allPath = [];
        var f = [...trail]

        // var one = []
        var one = JSON.parse(JSON.stringify(f[0]))

        for (let i = 0; i < trail.length; i++) {
          allPath.push(trail[i]);
        }
        one.time = 0

        allPath.unshift(one)

        console.log(allPath, one, "87987987")
        var coldsecond = GetColdsecond(stop, start);
        for (let i = 0; i < backtrail.length; i++) {
          allPath.push(backtrail[i]);
        }
        var b = [...backtrail]
        var two = JSON.parse(JSON.stringify(b[b.length - 1]))
        two.time = coldsecond;
        console.log("最后一个点", two);
        allPath.push(two);

        return allPath;
      }
    }

    //计算两个点之间的距离
    function getDistanceBy2PosArr(positions) {
      // console.log("1:",positions);
      var position = [];
      var p0 = Cesium.Cartographic.fromDegrees(positions[0], positions[1], positions[2]);
      var p1 = Cesium.Cartographic.fromDegrees(positions[3], positions[4], positions[5]);
      var pp0 = ellipsoid.cartographicToCartesian(p0);
      var pp1 = ellipsoid.cartographicToCartesian(p1);
      position.push(pp0);
      position.push(pp1);
      return (measure.getPositionDistance(measure.transformCartesianArrayToWGS84Array(position)));
    }
    var modellistsss=[];
    var tempss;
    //var mod;
    //创建模型
    function DataCreateModels(data) {
      // var property = cm.computeFlight(data);
      // var pos = { longitude: data[0].lng, latitude: data[0].lat, height: data[0].hig }
      // var planeModel = cm.CreateSingleModel(pos, "model测试", '../Apps/SampleData/models/CesiumAir/Cesium_Air.glb', 64, "飞机:");
      // planeModel.position = property;
      // planeModel.orientation = new Cesium.VelocityOrientationProperty(property);

    var mod= CreateKMLData(10, '../Apps/SampleData/models/CesiumAir/Cesium_Air.glb', data);
    modellistsss.push(mod);
    console.log("kml模型",modellistsss,mod);
    }

    //获取时间间隔秒       结束时间  开始时间
    function GetColdsecond(time1, time2) {
      var cold = Cesium.JulianDate.secondsDifference(time1, time2);
      return cold;
    }

    //生成kml数据,生成模型
    function CreateKMLData(modeid, modelurl, trail) {
      console.log("生成kml数据:", modeid, modelurl, trail);
      var flyArry = [];
      var czml_hh = [];

      for (let i = 0; i < trail.length; i++) {
        var x = trail[i].longitude;
        var y = trail[i].latitude;
        var z = trail[i].height;
        var t = trail[i].time;

        flyArry.push(t, x, y, z);
        // console.log(i, x, y, z, t);
      }

      czml_hh = [{
        //文本,时间
        id: 'document',
        name: '时间路径',
        version: '1.0',
        clock: {
          interval: Cesium.JulianDate.toIso8601(viewer.clock.startTime) + '/' + Cesium.JulianDate.toIso8601(viewer
            .clock.stopTime),
          currentTime: Cesium.JulianDate.toIso8601(viewer.clock.currentTime),
          multiplier: viewer.clock.multiplie,
        },
      },
      {
        id: modeid,
        name: '飞机路径',
        description: '飞机模型,标签',
        availability: Cesium.JulianDate.toIso8601(viewer.clock.startTime) + '/' + Cesium.JulianDate.toIso8601(viewer
          .clock.stopTime),
        //加载的模型数据
        model: {
          gltf: modelurl,
          //scale: 100,
          minimumPixelSize: 0,
          maxmumPixelSize: 64,
          heightReference: Cesium.HeightReference.CLAMP_TO_GROUND,
          distanceDisplayCondition: new Cesium.DistanceDisplayCondition(0, 100),
        },
        //旋转的方向
        orientation: {
          velocityReference: '#position',
        },
        viewFrom: {
          cartesian: [-1480, -1315, 1079],
        },
        //显示的文字信息
        label: {
          fillColor: [{
            interval: Cesium.JulianDate.toIso8601(viewer.clock.startTime) + '/' + Cesium.JulianDate.toIso8601(
              viewer.clock.stopTime),
            rgba: [255, 255, 255, 255],

          },],
          font: 'bold 14pt Segoe UI Semibold',
          horizontalOrigin: 'CENTER',
          showBackground: true,
          backgroundColor: {
            rgba: [0, 80, 142, 180],
          },
          backgroundPadding: {
            cartesian2: [10, 7],
          },
          outlineColor: {
            rgba: [0, 0, 0, 255],
          },
          pixelOffset: {
            cartesian2: [0.0, -100.0],
          },
          scale: 1.0,
          show: [{
            interval: Cesium.JulianDate.toIso8601(viewer.clock.startTime) + '/' + Cesium.JulianDate.toIso8601(
              viewer.clock.stopTime),
            boolean: true,
          },],
          style: 'FILL',
          text: '飞机名称标签',
          // verticalOrigin: 'CENTER',
          horizontalOrigin: Cesium.HorizontalOrigin.CENTER,
          verticalOrigin: Cesium.VerticalOrigin.CENTER,

        },
        billboard: {
          image: '../../img/icon.png',
          horizontalOrigin: Cesium.HorizontalOrigin.CENTER,
          verticalOrigin: Cesium.VerticalOrigin.BOTTOM,
          //width: 52,
          //height: 59.5,
          disableDepthTestDistance: 1000,
          minimumPixelSize: 0,
          maxmumPixelSize: 32,
          distanceDisplayCondition: new Cesium.DistanceDisplayCondition(1000, 10000),
          show: [{
            interval: Cesium.JulianDate.toIso8601(viewer.clock.startTime) + '/' + Cesium.JulianDate.toIso8601(
              viewer.clock.stopTime),
            boolean: true,
          },],
        },
        //显示路径
        path: {
          resolution: 1, //将路径显示为以1秒为增量采样的路径线
          id: modeid,
          name: '飞机路径',
          description: '飞机路径航行',
          availability: Cesium.JulianDate.toIso8601(viewer.clock.startTime) + '/' + Cesium.JulianDate.toIso8601(
            viewer.clock.stopTime),
          material: {
            polylineOutline: {
              color: {
                rgba: [255, 0, 0, 255],
              },
              outlineColor: {
                rgba: [255, 0, 0, 255],
              },
              outlineWidth: 1,
            },
          },

          width: 3,
          heightReference: Cesium.HeightReference.CLAMP_TO_GROUND,
          leadTime: 60,
          trailTime: 1000,
          resolution: 5,
        },
        //位置关系
        position: {
          interpolationAlgorithm: 'HERMITE',
          //interpolationDegree: 5,
          epoch: Cesium.JulianDate.toIso8601(viewer.clock.currentTime),
          cartographicDegrees: flyArry,
        },
      },
      ];


      console.log("路径数据11111111111111111:", czml_hh);
      var dataSourcePromise = viewer.dataSources.add(
        Cesium.CzmlDataSource.load(czml_hh),
      );
      dataSourcePromise.then((dataSource) => {

        tempss=dataSource;
        modellistsss.push(dataSource);

        var onetime = trail[1].time; //状态1时间
        var twotime = trail[2].time; //状态2时间
        var threetime = trail[3].time; //状态3时间
        var fourtime = trail[trail.length / 2 - 1].time; //状态4时间
        var fivetime = trail[trail.length / 2].time; //状态5
        var comtime=trail[trail.length-1].time;//状态6时间

        var getonetime = Cesium.JulianDate.addSeconds(viewer.clock.startTime, onetime, new Cesium.JulianDate());
        var gettwotime = Cesium.JulianDate.addSeconds(viewer.clock.startTime, twotime, new Cesium.JulianDate());
        var getthreetime = Cesium.JulianDate.addSeconds(viewer.clock.startTime, threetime, new Cesium.JulianDate());
        var getfourtime = Cesium.JulianDate.addSeconds(viewer.clock.startTime, fourtime, new Cesium.JulianDate());
        var getfivetime = Cesium.JulianDate.addSeconds(viewer.clock.startTime, fivetime, new Cesium.JulianDate());
        var getcomtime=Cesium.JulianDate.addSeconds(viewer.clock.startTime, comtime, new Cesium.JulianDate());

        console.log("11111", getonetime);
        console.log("22222", gettwotime);
        console.log("33333", getthreetime);
        console.log("44444", getfourtime);
        console.log("55555", getfivetime);
        console.log("66666", getcomtime);
        var mod1 = dataSource.entities.getById(modeid);
       
        mod1.model.distanceDisplayCondition=new Cesium.DistanceDisplayCondition(0, 10000);
        mod1.billboard.distanceDisplayCondition=new Cesium.DistanceDisplayCondition(10000, 100000000)

        events.push({
          time: getonetime,
          action: function () {
            console.log("事件10");
            mod1.label.text = "状态1"

          }
        })
        events.push({
          time: gettwotime,
          action: function () {
            console.log("事件11");
            mod1.label.text = "状态2"
          }
        })
        events.push({
          time: getthreetime,
          action: function () {
            console.log("事件12");
            mod1.label.text = "状态3"
          }
        })
        events.push({
          time: getfourtime,
          action: function () {
            console.log("事件13");
            mod1.label.text = "状态4"
          }
        })
        events.push({
          time: getfivetime,
          action: function () {
            console.log("事件14");
            mod1.label.text = "状态5"
          }
        })
        events.push({
          time: getfivetime,
          action: function () {
            console.log("事件15");
            mod1.label.text = "状态6"
          }
        })
        temp = [...events];


        //if (viewer.scene.mode != Cesium.SceneMode.SCENE2D) {
        //viewer.trackedEntity = mod;
        
        console.log("生成的模型:", mod1);

        //是否显示路径
        //viewer.trackedEntity.path.show = true;
        //是否显示模型
        //viewer.trackedEntity.model.show = true;
        
       
        // console.log("路径数据222222:" + PLANE_TIME_START);
        //}
        // //是否开始播放动画
        // viewer.clock.shouldAnimate = false;
        // //定义时间参数
        // this.startTime = PLANE_TIME_START;
        //return mod1;
      })
      //.otherwise((error) => {
      //   alert(error);
      // });
      //return czml_hh, flyArry;
      return czml_hh;
     
    }

    
    function clearFlyKml(){
      console.log("清除kml模型",modellistsss,tempss);
      for(let i=0;i<modellistsss.length;i++){
        viewer.dataSources.remove(modellistsss[i]);
      }
      //viewer.dataSources.remove(tempss);
    }
    var str=Cesium.JulianDate.toIso8601(viewer.clock.currentTime);
    console.log("当前时间:",str);

  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值