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);