Vue.js2+Cesium1.103.0 十六、多模型轨迹运动

news2024/9/22 1:39:12

Vue.js2+Cesium1.103.0 十六、多模型轨迹运动

Demo

<template>
  <div id="cesium-container" style="width: 100%; height: 100%;">
    <ul class="ul">
      <li v-for="(item, index) of deviceInfo" :key="index" class="li" :class="{ active: lock === item.id }"
        @click="handleClick(item)">
        {{ `飞机${item.id}` }}</li>
    </ul>
  </div>
</template>

<script>
/* eslint-disable no-undef */
/* eslint-disable new-cap */
import DrawDeviceUtil from '@/utils/DrawDevice.js'
const mock = require('./mock.json')
const mock2 = require('./mock2.json')
const mock3 = require('./mock3.json')
const mock4 = require('./mock4.json')
const mock5 = require('./mock5.json')
export default {
  name: 'FlightAnimation',
  data () {
    return {
      lock: '',
      deviceInfo: [
        {
          id: 1,
          uri: 'model/Cesium_Air.glb',
          scale: 1,
          position: {
            longitude: mock[0].longitude,
            latitude: mock[0].latitude,
            altitude: mock[0].altitude
          }
        },
        {
          id: 2,
          uri: 'model/Cesium_Air.glb',
          scale: 0.9,
          position: {
            longitude: mock2[mock2.length - 1].longitude,
            latitude: mock2[mock2.length - 1].latitude,
            altitude: mock2[mock2.length - 1].altitude
          }
        },
        {
          id: 3,
          uri: 'model/Cesium_Air.glb',
          scale: 0.8,
          position: {
            longitude: mock3[mock3.length - 1].longitude,
            latitude: mock3[mock3.length - 1].latitude,
            altitude: mock3[mock3.length - 1].altitude
          }
        },
        {
          id: 4,
          uri: 'model/Cesium_Air.glb',
          scale: 1,
          position: {
            longitude: mock4[mock4.length - 1].longitude,
            latitude: mock4[mock4.length - 1].latitude,
            altitude: mock4[mock4.length - 1].altitude
          }
        },
        {
          id: 5,
          uri: 'model/Cesium_Air.glb',
          scale: 1,
          position: {
            longitude: mock5[mock5.length - 1].longitude,
            latitude: mock5[mock5.length - 1].latitude,
            altitude: mock5[mock5.length - 1].altitude
          }
        }
      ],
      $DrawDeviceUtil: null
    }
  },
  computed: {},
  watch: {},
  mounted () {
    // return
    window.$InitMap()
    viewer.camera.flyTo({
      destination: Cesium.Rectangle.fromDegrees(100, 10, 120, 70)
    })

    this.$DrawDeviceUtil = new DrawDeviceUtil()
    // * 添加设备
    this.$DrawDeviceUtil.AddDevices(this.deviceInfo)

    // * 模拟 ws 上报实时位置信息
    let count = 0
    setInterval(() => {
      count += 1
      const position = mock[count]
      const position2 = mock2[count]
      const position3 = mock3[count]
      const position4 = mock4[count]
      const position5 = mock5[count]
      // * 更新位置
      this.$DrawDeviceUtil.UpdatePosition(1, position)
      this.$DrawDeviceUtil.UpdatePosition(2, position2)
      this.$DrawDeviceUtil.UpdatePosition(3, position3)
      this.$DrawDeviceUtil.UpdatePosition(4, position4)
      this.$DrawDeviceUtil.UpdatePosition(5, position5)
    }, 300)

    // 鼠标事件
    const handler = new Cesium.ScreenSpaceEventHandler(viewer.scene.canvas)
    handler.setInputAction(function (event) { },
      Cesium.ScreenSpaceEventType.LEFT_CLICK)
  },
  methods: {
    handleClick (data) {
      this.lock = this.lock === data.id ? '' : data.id
      if (this.lock) {
        this.$DrawDeviceUtil.LockEntity(this.lock)
      } else {
        this.$DrawDeviceUtil.UnLockEntity()
      }
    }
  }
}
</script>
<style lang="scss" scoped>
.ul {
  position: absolute;
  right: 50px;
  top: 50px;
  z-index: 999;
  color: #fff;

  .li {
    cursor: pointer;

    &.active {
      color: red;
    }
  }
}
</style>

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1714935.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

E. Binary Deque[双指针好思维题]

Binary Deque 题面翻译 有多组数据。 每组数据给出 n n n 个数&#xff0c;每个数为 0 0 0 或 1 1 1 。你可以选择从两边删数&#xff0c;求至少删几个数才可以使剩下的数总和为 s s s 。 如果不能达到 s s s &#xff0c;则输出 − 1 -1 −1 。 题目描述 Slavic h…

NAS使用小妙招丨系统域名配件

NAS&#xff08;网络附加存储&#xff09;使用主要涉及到系统安装与设置、域名绑定、以及配件选择与配置。以下将分别针对这三个方面进行详细阐述&#xff1a; 一、系统安装与设置 安装群晖NAS系统&#xff1a; 将NAS设备连接到网络和电源。 通过计算机浏览器输入设备的IP地址…

【RAG论文】文档树:如何提升长上下文、非连续文档、跨文档主题时的检索效果

RAPTOR Recursive Abstractive Processing for Tree-Organized RetrievalICLR 2024 Stanfordhttps://arxiv.org/pdf/2401.18059 RAPTOR&#xff08;Recursive Abstractive Processing for Tree-Organized Retrieval&#xff09;是一种创建新的检索增强型语言模型&#xff0c;它…

Python OCR 文字识别使用模型:读光-文字识别-行识别模型-中英-通用领域

介绍 什么是OCR&#xff1f; OCR是“Optical Character Recognition”的缩写&#xff0c;中文意为“光学字符识别”。它是一种技术&#xff0c;可以识别和转换打印在纸张或图像上的文字和字符为机器可处理的格式&#xff0c;如计算机文本文件。通过使用OCR技术&#xff0c;可…

在热力图基础上寻找所有峰值位置

文章目录 概要代码概要 理解热力图:首先,了解热力图是什么以及它代表了什么信息至关重要。热力图通常是二维的,其中每个像素的颜色表示该位置的数值大小。较亮的颜色通常表示较高的数值,而较暗的颜色表示较低的数值。 阈值处理:根据问题的要求,可能需要对热力图进行阈值处…

C语言:从键盘输入若干行字符(每行长度不等),输入后把它们存储到一磁盘文件中。再从该文件中读入这些数据,将其中小写字母转换成大写字母后在显示屏上输出。

void load(char str[100]) {int i 0;FILE* pf fopen("count.txt", "r");if (pf NULL){perror("error:");return 1;}printf("把字符转成大写后\n");while (fscanf(pf,"%s",str)!EOF){for (i 0; str[i] ! \0; i){if (str[…

藏汉双语翻译平台,专业准确的藏语翻译工具和藏文OCR识别工具,在西藏提高工作效率的利器!

如果你正在找一款支持藏语-汉语双向翻译、操作简单、功能又丰富的藏汉在线翻译器&#xff0c;那就不得不推荐一下近期上线的藏汉翻译通小程序。在西藏工作、拉萨旅游或者写藏文作文时&#xff0c;如果你有翻译藏语的需求&#xff0c;那它&#xff0c;就能满足你&#xff0c;协助…

探索AI去衣技术中的反射应用

在当今数字时代&#xff0c;人工智能&#xff08;AI&#xff09;技术的飞速发展已经渗透到了我们生活的方方面面。其中&#xff0c;图像处理和计算机视觉作为AI的重要分支&#xff0c;正不断推动着创新应用的边界。今天&#xff0c;我们要探讨的是一个颇具争议但又技术上颇为有…

OSPF扩展知识2

FA-转发地址 正常 OSPF 区域收到的 5 类 LSA 不存在 FA 值&#xff1b; 产生 FA 的条件: 1、5类LSA ----假设 R2为 ASBR&#xff0c;90/0 口工作的 OSPF 中&#xff0c;g0/1 口工作在非 ospf 协议或不同 ospf 进程中&#xff1b;若 g0/1 也同时宣告在和 g0/0 相同的 OSPF 进程…

【PB案例学习笔记】-13 徒手做个电子时钟

写在前面 这是PB案例学习笔记系列文章的第11篇&#xff0c;该系列文章适合具有一定PB基础的读者。 通过一个个由浅入深的编程实战案例学习&#xff0c;提高编程技巧&#xff0c;以保证小伙伴们能应付公司的各种开发需求。 文章中设计到的源码&#xff0c;小凡都上传到了gite…

Gir clone 设置代理与错误

git查看、配置、删除代理 link git config --global https.proxy http://127.0.0.1:1080 git config --global http.proxyhttps://stackoverflow.com/questions/11265463/reset-git-proxy-to-default-configuration git config --global --unset http.proxy git config --gl…

如何评价GPT-4o?

如何评价GPT-4o? 简介&#xff1a;最近&#xff0c;GPT-4o横空出世。对GPT-4o这一人工智能技术进行评价&#xff0c;包括版本间的对比分析、GPT-4o的技术能力以及个人感受等。 GPT-4o的名称中“o”代表Omni&#xff0c;即全能的意思&#xff0c;凸显了其多功能的特性&#xf…

43-3 应急响应 - WebShell查杀工具

一、WebShell 简介 WebShell是一种以asp、php、jsp等网页文件形式存在的代码执行环境,通常用于网站管理、服务器管理和权限管理等操作。然而,如果被入侵者利用,它也可以用于控制网站服务器。具有完整功能的WebShell通常被称为"大马",而功能简单的则称为"小马…

抖店项目的优缺点介绍,开店必看

内容来源于【电商王路飞】 抖店的第一个缺点&#xff0c;就是资金占用 不要妄想抖店是个0投入的项目&#xff0c;不现实&#xff1b;也不要想着去做0保证金入驻的抖音个人店&#xff0c;没有意义。 做抖店就是需要有一定资金投入的。 像店铺的保证金&#xff0c;个体店是20…

一文讲清楚:如何做好建设工程项目管理?

在房地产开发中&#xff0c;作为项目负责人我目前的状况成了一个大管家&#xff0c;还要管理工程质量。上至各部门领导的关系维护&#xff0c;下到工人的吃喝拉撒都要我操心&#xff0c;还要没完没了的处理四邻纠纷和拆迁户的纠纷&#xff0c;每天都搞得很疲惫&#xff0c;如何…

Spring-注解

Spring 注解分类 Spring 注解驱动模型 Spring 元注解 Documented Retention() Target() // 可以继承相关的属性 Inherited Repeatable()Spirng 模式注解 ComponentScan 原理 ClassPathScanningCandidateComponentProvider#findCandidateComponents public Set<BeanDefin…

一款高级管理控制面板主题!【送源码】

AdminLTE是一个完全响应的管理模板。基于Bootstrap5框架和JavaScript插件。高度可定制&#xff0c;易于使用。适用于从小型移动设备到大型桌面的多种屏幕分辨率。AdminLTE 是一个基于Bootstrap 3.x的免费高级管理控制面板主题。 https://github.com/almasaeed2010/AdminLTE —…

前端基础入门:静态页面与动态页面的区别

什么是静态页面和动态页面&#xff1f; 通俗的来讲&#xff0c;静态页面是随着HTML代码的生成&#xff0c;页面的内容和显示效果就基本不会发生变化&#xff08;除非修改页面代码&#xff09;&#xff0c;而动态页面&#xff0c;虽然同样页面代码不发生变化&#xff0c;但是其…

如何在中国网上发布文章

随着互联网的迅猛发展&#xff0c;网上发布文章已经成为一种重要的传播方式。而在中国&#xff0c;作为世界上最大的互联网市场&#xff0c;如何在中国网上发布文章成为了许多人关注的焦点。媒介多多网发稿平台作为一个专业的发稿平台&#xff0c;为广大作者提供了很好的发布文…

建议大家少用点儿网站测速工具

春节休息期间明月有接了几个服务器代运维的业务&#xff0c;期间就发现不少新手站长们还在用 17ce、站长工具等等这些网站测速工具来评判站点访问速度的&#xff0c;感觉很有必要给大家聊聊这个事儿&#xff0c;因为这毕竟也是一个涉及服务器安全的一个重要环节了。 其实&#…