cesium空中飞行飞机


 

<template>

  <div class="topbox">

    xx飞机飞行管理

  </div>

  <div class="selectbox">

    <div class="title">

      航线列表

    </div>

    <el-table :data="tableData" style="width: 100%;height:230px;" @row-click="row">

      <el-table-column prop="date" label="日期"/>

      <el-table-column prop="name" label="航线名"/>

      <el-table-column prop="address" label="类型" />

    </el-table>

</div>

<div class="selectbox box2">

  <div class="title">

    航线站点

  </div>

  <div>

    <el-steps :space="200" :active="currentnum" finish-status="success">

      <el-step :title="item.name" v-for="(item,index) in arrsp" :key="index" />

    </el-steps>

  </div>

</div>

<div style="color:#ffffff;position:absolute;top:90px;right:10px;z-index:100;">

  速度:<el-input-number v-model="currents" :min="1" :max="100" @change="handleChange" />

</div>

  <div id="container" class="mainMap2"></div>

  </template>

  <script setup lang="ts">

import { ref, onMounted} from 'vue';

import {hyczData} from "../../../assets/fj";

let esc,viewer,scene;

onMounted(async () => {

   esc = new easyCesium.init();

  //  默认加载本地静态图片

    viewer = esc.init({url:"./baseImage.jpg",Cesium:Cesium,id:"container"});

    esc.utils().tools({val:"高程"})

    scene = esc.scenes()

    scene.hideTime()

});

let currents = ref(1)

let arrsp=ref([])

hyczData.forEach((item,index)=>{

  arrsp.value.push({name:"站点"+(index+1),lt:item})

})

const row=(data)=>{

  if(!entity.value){

    scene.addfj({options:{startTime:"2022-03-09T23:10:00Z",modelUrl:"./Air.glb",imgUrl:"./飞机.png",stop:value1.value,track:value2.value,multip:textnum.value}},hyczData,callback)

  }else{

    scene.remove(entity.value)

    arrsp.value=[]

  }

}

const tableData = [

  {

    date: '2016-05-03',

    name: '航线一',

    address: '民一',

  },

  {

    date: '2016-05-02',

    name: '航线三',

    address: '民二',

  },

  {

    date: '2016-05-04',

    name: '航线二',

    address: '民三',

  },

  {

    date: '2016-05-05',

    name: '航线二',

    address: '民三',

  },

  {

    date: '2016-05-02',

    name: '航线三',

    address: '民二',

  },

  {

    date: '2016-05-04',

    name: '航线二',

    address: '民三',

  },

  {

    date: '2016-05-05',

    name: '航线二',

    address: '民三',

  }

]

let isleft = ref(false)

let textnum = ref(1)

let value1 = ref(true)

let value2 = ref(true)

let entity = ref(null)

let currentnum = ref(1)

let callback=(res)=>{

  if(res.entity){

    entity.value = res.entity

  }

  if(res.num){

    currentnum.value = res.num+1

  }

    }

    let   handleChange=(val)=>{

        scene.status({options:{multip:currents.value}})

    }

  let   handleChange1=(val)=>{

    if(isleft.value){

      scene.status({options:{status:value1.value,multip:textnum.value,entity:entity.value,track:value2.value}})

    }

    }

const change = (val)=>{

  if(val=="海洋航行"){

    isleft.value = true

    scene.addhy({options:{startTime:"2022-03-09T23:10:00Z",modelUrl:"./济阳级护卫舰.gltf",imgUrl:"./帆船.png",stop:value1.value,track:value2.value,multip:textnum.value}},hyczData,callback)

    }

    if(val=="暂停"){

    isleft.value = false

      scene.status({options:{status:value1.value,multip:textnum.value,entity:entity,track:value2.value}})

    }

}

const value = ref('')


 

// const num = 0

  </script>

  <style scoped>

  @import url("../../../assets/css/scene.css");

  </style>

  <style>

  @import url("../../../assets/css/scenet.css");

  </style>

  • 4
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Cesium是一个用于创建地球可视化应用程序的开源JavaScript库。它可以用来模拟飞机飞行的动画效果。你可以使用Cesium的实体和位置插件来创建一个飞机实体,并在地球上移动它的位置,从而模拟飞行的效果。你可以设置飞行的起点和终点,然后使用插值算法来计算飞机在两点之间的路径,并在每一帧更新飞机的位置,从而实现平滑的飞行动画。 这是一个简单的示例代码,展示了如何使用Cesium模拟飞机飞行: ```javascript // 创建地球场景 var viewer = new Cesium.Viewer("cesiumContainer"); // 创建飞机实体 var airplaneEntity = viewer.entities.add({ position: Cesium.Cartesian3.fromDegrees(startLongitude, startLatitude, startAltitude), model: { uri: "path/to/airplane.glb", minimumPixelSize: 64 } }); // 设置飞行路径 var flightPath = new Cesium.SampledPositionProperty(); flightPath.addSample(Cesium.JulianDate.now(), Cesium.Cartesian3.fromDegrees(startLongitude, startLatitude, startAltitude)); flightPath.addSample(Cesium.JulianDate.addSeconds(Cesium.JulianDate.now(), flightDuration), Cesium.Cartesian3.fromDegrees(endLongitude, endLatitude, endAltitude)); // 创建飞行动画更新函数 viewer.clock.onTick.addEventListener(function(clock) { var time = clock.currentTime; var position = flightPath.getValue(time); airplaneEntity.position = position; }); ``` 请注意,这只是一个简单的示例,你需要根据你的具体需求进行适当的调整和扩展。你还需要提供飞机模型的路径和起始/结束点的经纬度坐标等参数。希望对你有所帮助!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值