【MapBox】实现实时飞行轨迹功能

之前写了一篇MapBox添加带箭头的轨迹线,现在在这个基础之上实现获取到无人机的推送点位数据实时飞行的功能

  1. 首先创建实例,将无人机的图标加载在地图上
const MAP_UAV_FLIGHT_ING = (values, layerKey = '无人机飞行') => {ClearUAVMap();const map = GET_MAPBOX_MAP();map.loadImage(imageIcon.value, function (error, img) {if (error) throw error;map.addImage('uavIcon', img);});const allPoints = [];allPoints.push(turf.point([values?.droneLongitude, values?.droneLatitude], {...values,layerKey,bearing: values.yaw,}),);// 特征集合animatePointGeoJson = turf.featureCollection(allPoints);map.addLayer({id: 'animatePointLayer',type: 'symbol',source: {type: 'geojson',data: animatePointGeoJson,},layout: {'icon-image': 'uavIcon','icon-size': 0.5,'icon-rotate': ['get', 'bearing'],'icon-rotation-alignment': 'map','icon-allow-overlap': true,'icon-ignore-placement': true,},});// counter = counter + 1;
};

备注:

  1. ClearUAVMap()方法是为了清除图层,否则再展示其他无人机轨迹的时候控制台会提示地图上已存在这个图层
// 清除轨迹
export const ClearUAVMap = () => {if (map?.hasImage('uavIcon')) map?.removeImage('uavIcon');if (map.getLayer('animatePointLayer')) map.removeLayer('animatePointLayer');if (map.getSource('animatePointLayer')) map.removeSource('animatePointLayer');if (map.getLayer('homePointLayer')) map.removeLayer('homePointLayer');if (map.getSource('homePointLayer')) map.removeSource('homePointLayer');
};
  1. ‘icon-rotate’: [‘get’, ‘bearing’],这个数据是添加数据源中指定的属性,bearing表示无人机的方向,这样无人机就会按照所提供的方向进行飞行

  2. 这个时候获取到实时推送的数据只需要获取到该图层的图层源改数据就可以了,不用清除再重新加载

const MAP_ANIMATE_ING = (values, layerKey = '无人机飞行') => {const map = GET_MAPBOX_MAP();animatePointGeoJson.features[0].geometry.coordinates = [values?.droneLongitude, values?.droneLatitude];animatePointGeoJson.features[0].properties = {...values,layerKey,bearing: values.yaw, //方向};map.getSource('animatePointLayer').setData(animatePointGeoJson);map.moveLayer('animatePointLayer', 'arrowLayer', 'routeLayer');
};

在这里插入图片描述

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

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

相关文章

Linux面试题汇总!附答案详解!学习提升必备!(30w+收藏)

Linux 概述 什么是Linux Unix和Linux有什么区别? 什么是 Linux 内核? Linux的基本组件是什么? Linux 的体系结构 BASH和DOS之间的基本区别是什么? Linux 开机启动过程? Linux系统缺省的运行级别? L…

高效学习方法:冥想背诵,看一句念一句,再每个词分析位置及语法等合理性,忘记哪个词再看猜下为什么会忘,跟自己的表达哪里不一样。

原则:易学则易行,则效果最好。《易经》 你提到的这种学习方法结合了多种记忆和理解技巧,可以帮助提高学习效率。下面是对这种方法的一个详细解释和一些建议: 冥想背诵:通过冥想来集中注意力,可以帮助你在没…

批量邮箱API发送邮件时如何提高发送效率?

批量邮箱API发送邮件的方法?如何用API批量发送邮件? 如何在使用批量邮箱API发送邮件时提高发送效率,却是众多企业和开发者所关注的焦点。AokSend将从多个方面探讨如何优化批量邮箱API发送邮件的效率,确保邮件能够迅速、准确地送达…

【C++】vector系列力扣刷题日志(136.只出现一次的数字,118.杨辉三角,26.删除有序数组中的重复项,260.只出现一次的数字 |||)

目录 136.只出现一次的数字 118.杨辉三角 26.删除有序数组中的重复项 260.只出现一次的数字 ||| vector的详细介绍及用法这里就不过多赘述了,可以参考上一篇博客:vector的介绍及使用说明 136.只出现一次的数字 题目: 给你一个 非空 整数…

开源代码分享(17)—基于yalmip+cplex的微电网优化调度(附matlab代码)

1基本概念 微网(Micro-Grid,MG)是进行电能调度时常见的概念,作为组织各分布式单元的结构。微网概念的提出旨在实现分布式电源的灵活、高效应用,解决数量庞大、形式多样的分布式电源并网问题[8]。微网中集成了电源、储能…

ZooKeeper 的持久化机制

持久化的定义: 数据,存到磁盘或者文件当中。机器重启后,数据不会丢失。内存 -> 磁盘的映射,和序列化有些像。 ZooKeeper 的持久化: SnapShot 快照,记录内存中的全量数据TxnLog 增量事务日志&#xff…

11.牛客---链表分割(Java版)

又没找到题目链接 题解: 错误之系列之一 错误之系列之二 代码

MyBatis 解决上篇的参数绑定问题以及XML方式交互

前言 上文:MyBatis 初识简单操作-CSDN博客 上篇文章我们谈到的Spring中如何使用注解对Mysql进行交互 但是我们发现我们返回出来的数据明显有问题 我们发现后面三个字段的信息明显没有展示出来 下面我们来谈谈解决方案 解决方案 这里的原因本质上是因为mysql中和对象中的字段属性…

2024年最受欢迎的 19 个 VS Code 主题排行榜

博主猫头虎的技术世界 🌟 欢迎来到猫头虎的博客 — 探索技术的无限可能! 专栏链接: 🔗 精选专栏: 《面试题大全》 — 面试准备的宝典!《IDEA开发秘籍》 — 提升你的IDEA技能!《100天精通鸿蒙》 …

GROBID库文献解析

1. 起因 由于某些原因需要在大量的文献中查找相关内容,手动实在是太慢了,所以选择了GROBID库进行文献批量解析 2. GROBID介绍 GROBID是一个机器学习库,用于将PDF等原始文档提取、解析和re-structuring为结构化的XML/TEI编码文档&#xff0…

pytorch yolov5+Deepsort实现目标检测和跟踪+单目测距

最近一直在整理单目测距的内容,想着检测单目测距都写完了,顺手也写个检测跟踪单目测距,算是总结下这部分内容吧,如果有错误,还请不吝赐教!! 参考文献: YOLOv5DeepSort实现目标跟踪 pytorch yolo…

郭天祥新概念51单片机(第四期读书笔记)

时钟周期、状态周期、机器周期、指令周期与晶振频率之间的关系 1、晶振频率与脉冲的关系 假设单片机的晶振频率是12MHz,那么它的一个脉冲为1/12微秒;晶振单位时间发出的脉冲则为: 12 ∗ 1 0 6 12*10^6 12∗106。 假设单片机的晶振频率是4MH…

Python 音频处理工具库之pydub使用详解

概要 在音频处理领域,Python pydub 库是一个功能强大且易于使用的工具,它可以帮助开发者处理音频文件的各种操作,如剪切、合并、转换格式、调整音量等。本文将详细介绍 pydub 库的功能、用法以及一些实际应用案例,帮助大家更好地了解和使用这个强大的音频处理工具。 什么是…

数据守护者:揭秘备份数据的终极策略

在数字化日益深入的今天,备份数据的重要性不言而喻。无论是个人用户还是企业机构,数据都是最宝贵的资产之一。一旦数据丢失或受损,可能会导致无法挽回的损失,甚至影响业务的正常运转。因此,备份数据成为了一种必要的安…

Linux中查看文件内容的命令

文章目录 一、七类常见的Linux的文件二、显示命令三、分页显示四、显示文件前后内容五、压缩、解压缩六、补充 一、七类常见的Linux的文件 字符文件类型-普通文件,包括纯文本文件、二进制文件、各种压缩文件等。在find命令中,type 选项中用 f来表示d目录…

B站海外商业化探索之路

本期作者 背景 业务背景 B站(bilibili)出海以来,深耕内容生态和用户播放体验,业务发展逐渐步入正轨,用户体量稳中有升,目前在东南亚视频APP领域占领了一定的市场份额。 如何探索和实施商业化策略&#xff…

搜维尔科技:Manus Prime 3 Mocap数据手套,体验极致的每指触觉!

完全适用于VR虚拟现实场景 特斯拉也在使用的量子数据 Tesla 目前正在使用 MANUS Quantum Metagloves创建一个数据集,帮助他们训练 Tesla 机器人。 量子数据训练QUANTUM AI 我们以类似的方式使用 Quantum Metagloves 来生成一流的手指跟踪数据集,并将其…

GoogleNet神经网络介绍

一、简介 GoogleNet,也称为GoogLeNet,是谷歌工程师设计的一种深度神经网络结构,它在2014年的ImageNet图像识别挑战赛中取得了冠军。该神经网络的设计特点主要体现在其深度和宽度上,通过引入名为Inception的核心子网络结构&#x…

RWKV_Pytorch:支持多硬件适配的开源大语言模型推理框架

亲爱的技术探索者们,今天我要向大家隆重推荐一个在开源社区中崭露头角的项目——RWKV_Pytorch。这是一个基于Pytorch的RWKV大语言模型推理框架,它不仅具备高效的原生Pytorch实现,而且还扩展了对多种硬件的适配支持,让模型的部署和…

应用方案 | D358 高增益运算放大器,可以用于音频放大器、工业控制、DC 增益部件和所有常规运算放大电路

一、概述 D358 由两个独立的高增益运算放大器组成。可以是单电源工作,也可以是双电源工作,电源低功耗电流与电源电压大小无关。 应用范围包括音频放大器、工业控制、DC 增益部件和所有常规运算放大电路。 D358 采用 DIP8、SOP8、MSOP8 和 TSSOP8 的封装形…