当前位置: 首页 > news >正文

mars3d动态轨迹DynamicRoamLine,如何获取实时运⾏的经纬度

问题
1.期望 实现 实时显示经纬度、⾼度,做电⼦围栏报警判断
2.第⼀步就是要,获取实时运⾏的经纬度信息、⾼度信息,然后通过算法做电⼦围栏判断
3.使⽤了参数getOverPositions,发现返回的不是经纬度
相关链接
http://mars3d.cn//editor-vue.html?id=graphic/roam/dynamicRoamLine
代码
import * as mars3d from "mars3d"
export let map // mars3d.Map三维地图对象
export let graphicLayer // ⽮量图层对象
// 需要覆盖config.json中地图属性参数(当前示例框架中⾃动处理合并)
export const mapOptions = {
 scene: {
 center: { lat: 31.773622, lng: 117.077444, alt: 5441, heading: 359, p
itch: -57 }
 }
}
export const eventTarget = new mars3d.BaseClass()
/**
 * 初始化地图业务,⽣命周期钩⼦函数(必须)
 * 框架在地图初始化完成后⾃动调⽤该函数
 * @param {mars3d.Map} mapInstance 地图对象
 * @returns {void} ⽆
 */
export function onMounted(mapInstance) {
 map = mapInstance // 记录map
 // 演示数据的时间
 map.clock.currentTime = Cesium.JulianDate.fromDate(new Date("2020-11-2
5 10:10:00"))
 // 加载⻋辆
 mars3d.Util.fetchJson({
 url: "//data.mars3d.cn/file/apidemo/car-list.json"
 })
 .then(function (res) {
 const tableData = res.data
 eventTarget.fire("carList", { tableData })
 showCarList(tableData)
 })
 .catch(function () {
 globalMsg("查询信息失败")
 })
}
/**
 * 释放当前地图业务的⽣命周期函数
 * @returns {void} ⽆
 */
export function onUnmounted() {
 map = null
}
const colors = [
 "rgb(40, 40, 255)",
 "rgb(0, 88, 176)",
 "rgb(0, 128, 255)",
 "rgb(0, 217, 0)",
 "rgb(0, 151, 0)",
 "rgb(255, 199, 83)",
 "rgb(255, 144, 30)",
 "rgb(202, 101, 0)",
 "rgb(255, 0, 0)"
]
function showCarList(arr) {
 console.log("加载" + arr.length + "条")
 // 创建⽮量数据图层
 graphicLayer = new mars3d.layer.GraphicLayer()
 map.addLayer(graphicLayer)
 // ⿏标移⼊提示信息
 graphicLayer.bindTooltip(function (event) {
 const data = event.graphic.options
 return "⻋辆编号:" + data.id + "<br />⻋牌号码:" + data.name
 })
 // 单击地图空⽩处
 map.on(mars3d.EventType.clickMap, function (event) {
 if (lastClickCar) {
 lastClickCar.removeShading("circle")
 lastClickCar = null
 }
 })
 // 绑定点击事件
 graphicLayer.on(mars3d.EventType.click, (event, position) => {
 const car = event.graphic
 console.log("单击了⻋辆", car)
 if (lastClickCar) {
 if (lastClickCar === car) {
 return
 } // 重复单击,跳出
 lastClickCar.removeShading("circle")
 lastClickCar = null
 }
 car.addShading({
 type: "circle",
 materialType: mars3d.MaterialType.CircleWave,
 speed: 10,
 count: 3,
 gradient: 0.1,
 radius: 50,
 color: "#ffff00",
 opacity: 0.3,
 show: true
 })
 lastClickCar = car
 // 视⻆定位下
 // car.flyToPoint({ radius: 1000 })
 })
 let lastClickCar
 for (let i = 0; i < arr.length; i++) {
 const item = arr[i]
 item.show = true
 let modelParam
 switch (item.type) {
 case 1:
 modelParam = {
 scale: 2,
 url: "//data.mars3d.cn/gltf/mars/car/tufangche.glb"
 }
 break
 case 2:
 modelParam = {
 scale: 1,
 url: "//data.mars3d.cn/gltf/mars/car/wajueji.glb"
 }
 break
 default:
 }
 const car = new mars3d.graphic.DynamicRoamLine({
 id: item.id,
 name: item.name,
 model: {
 clampToGround: true,
 show: true,
 ...modelParam
 },
 shadow: [
 {
 type: "polyline",
 color: colors[i],
 width: 2,
 clampToGround: true,
 maxDistance: 500,
 show: true
 }
 ]
 })
 car.on(mars3d.EventType.change, (event) => {
 console.log(event);
 })
 graphicLayer.addGraphic(car)
 }
 // 定时获取卡⻋和铲⻋的列表数据
 createPath()
}
// 取轨迹数据的时间间隔(单位:秒)
const timeStep = 10
let lastTime
// ⾸次获取并创建轨迹
function createPath() {
 // 取数据的时间范围,结束时间
 const date = Cesium.JulianDate.toDate(map.clock.currentTime)
 const endTime = mars3d.Util.formatDate(date, "yyyy-MM-dd HH:mm:ss")
 // 修改当前时间回退⼀分钟,因为数据永远是当前时间之前的。
 date.setSeconds(date.getSeconds() - 60)
 map.clock.currentTime = window.Cesium.JulianDate.fromDate(date)
 // 取数据的时间范围,开始时间
 date.setMinutes(date.getMinutes() - 10) // 初次取⼀定时间内的数据
 const beginTime = mars3d.Util.formatDate(date, "yyyy-MM-dd HH:mm:ss")
 // 记录最后⼀次读取数据的时间
 lastTime = endTime
 // 取数据
 getPathList(beginTime, endTime)

解决⽅案: change事件中可以拿到position属性
issue: https://gitee.com/marsgis/mars3d/issues/I5CCL8?from=project-issue
 // 定时更新
 setInterval(() => {
 updatePath()
 }, timeStep * 1000)
}
解决⽅案: change事件中可以拿到position属性
issue: https://gitee.com/marsgis/mars3d/issues/I5CCL8?from=project-issue

相关文章:

mars3d动态轨迹DynamicRoamLine,如何获取实时运⾏的经纬度

问题 1.期望 实现 实时显示经纬度、⾼度&#xff0c;做电⼦围栏报警判断 2.第⼀步就是要&#xff0c;获取实时运⾏的经纬度信息、⾼度信息&#xff0c;然后通过算法做电⼦围栏判断 3.使⽤了参数getOverPositions&#xff0c;发现返回的不是经纬度 相关链接 http://mars3d.cn//e…...

jvm常识

Jvm工作原理学习笔记0126一、JVM的生命周期1.JVM实例对应了一个独立运行的java程序它是进程级别a)启动。启动一个Java程序时&#xff0c;一个JVM实例就产生了&#xff0c;任何一个拥有public static void main(String[] args)函数的class都可以作为JVM实例运行的起点b)运行。ma…...

PHP部署、nginx与PHP的整合、PHP动态添加模块

文章目录前言一、基本知识1.php介绍2.PHP能做什么3.web工作原理4.PHP脚本主要用于领域5.php其他相关信息6.memcache介绍二、php的源码安装1.php安装2.php配置三、nginx与php整合四、php动态扩展模块&#xff08;memcache模块&#xff09;前言 一、基本知识 1.php介绍 官方下载…...

SpringCloud与SpringBoot的版本对应

一、SpringCloud与SpringBoot的版本对应 SpringCloud版本 SpringBoot版本 2021.0.1-SNAPSHOT Spring Boot >2.6.4-SNAPSHOT and <2.7.0-M1 2021.0.0 Spring Boot >2.6.1 and <2.6.4-SNAPSHOT 2021.0.0-RC1 Spring Boot >2.6.0-RC1 and <2.6.1 2021.0.0-M3 Sp…...

华为OD机试题,用 Java 解【N 进制减法】问题

最近更新的博客 华为OD机试 - 猴子爬山 | 机试题算法思路 【2023】华为OD机试 - 分糖果(Java) | 机试题算法思路 【2023】华为OD机试 - 非严格递增连续数字序列 | 机试题算法思路 【2023】华为OD机试 - 消消乐游戏(Java) | 机试题算法思路 【2023】华为OD机试 - 组成最大数…...

Linux->进程概念于基本创建

1. 进程基本概念 当一个可执行程序被加载到内存当中&#xff0c;并由操作系统将其管理起来&#xff0c;此时这个程序就被称之为进程。也就是下方的&#xff1a; 程序的一个执行实例&#xff0c;正在执行的程序等 担当分配系统资源&#xff08;CPU时间&#xff0c;内存&#xff…...

【MySQL】5.7版本解压安装配置

前言 之所以使用解压版本&#xff0c;而不使用exe安装&#xff0c;因为exe的安装方式删除过于麻烦&#xff01;&#xff01;&#xff01; 如果安装MySQL过程中&#xff0c;出错了或者想重新在来一把&#xff0c;删除mysql服务即可 sc delete mysql # 删除已经安装好的Mysql&a…...

c++类对象数据成员和虚函数的内存布局

一直想搞清楚类对象的数据成员和虚函数的内存布局&#xff0c;今天刚好有时间&#xff0c;所以就写了个demo查看了一下具体的内存布局情况&#xff08;使用的编译器为微软的&#xff09;。下面是自己demo的代码&#xff1a;#include <iostream> #include <windows.h&g…...

Python 模块和包

1. 模块和包 **容器&#xff1a;**列表、元组、字符串、字典等&#xff0c;对数据的封装**函数&#xff1a;**对语句的封装**类&#xff1a;**对方法和属性的封装&#xff0c;即对函数和数据的封装 而模块&#xff08;module&#xff09;就是个程序&#xff0c;一个.py 文件&…...

Java零基础专栏——面向对象

1 面向对象思想1.1 什么是面向对象&#xff1f;2 类和对象2.1 类和对象的理解2.2 类的定义2.3定义类的补充注意事项2.4 对象的使用2.5 练习3 封装3.1 封装思想3.1.1 封装概述3.1.2 封装的步骤3.1.3 封装代码实现3.2 private关键字3.3 练习—private的使用4 构造方法4.1 构造方法…...

离散无记忆与有记忆信源的序列熵

本专栏包含信息论与编码的核心知识&#xff0c;按知识点组织&#xff0c;可作为教学或学习的参考。markdown版本已归档至【Github仓库&#xff1a;information-theory】&#xff0c;需要的朋友们自取。或者公众号【AIShareLab】回复 信息论 也可获取。 文章目录离散无记忆信源的…...

算法该不该刷?如何高效刷算法?

一、算法该不该刷&#xff1f;最近有小伙伴向我咨询一个问题&#xff0c;就是算法该不该刷&#xff0c;该如何刷算法呢&#xff1f;这个问题可谓太大众化了&#xff0c;只要你去某乎、某度搜索一下相关的解答&#xff0c;会有无数种回答&#xff0c;可见这个问题困扰了多少学习…...

Allegro如何在关闭飞线模式下查看网络连接位置操作指导

Allegro如何在关闭飞线模式下查看网络连接位置操作指导 在用Allegro做PCB设计的时候,有时会因为设计需要,关闭飞线显示。 如何在关闭飞线显示模式下查看网络连接的位置,如下图 除了能看到网络连接的点位以外,还能看到器件的pin Number 如何显示出这种效果,具体操作如下 …...

啊哈 算法读书笔记 第 1 章 一大波数正在靠近——排序

目录 排序算法&#xff1a; 时间复杂度&#xff1a; 排序算法和冒泡排序之间的过渡&#xff1a; 冒泡排序 冒泡排序和快速排序之间的过渡&#xff1a; 快速排序 排序算法&#xff1a; 首先出场的是我们的主人公小哼&#xff0c;上面这个可爱的娃就是啦。期末考试完了老…...

Servlet笔记(5):HTTP请求与响应

1、HTTP请求 当浏览器请求网页时&#xff0c;它会向Web服务器发送特定信息&#xff0c;这些信息不能被直接读取&#xff0c;而是通过传输HTTP请求时&#xff0c;封装进请求头中。 有哪些头信息&#xff1f; 头信息描述Accept这个头信息指定浏览器或其他客户端可以处理的 MIME…...

信号的运算与变换

目录 前言 本章内容介绍 信号的运算与变换 相加 相乘 时移 反折 尺度变换 微分&#xff08;差分&#xff09; 积分&#xff08;累加&#xff09; 信号的奇偶求解 信号的实虚分解 合适的例题 1、时移反折 2、时移尺度 3、时移反折尺度 4、反求x(t) 前言 《信号…...

【GO】K8s 管理系统项目9[API部分--Secret]

K8s 管理系统项目[API部分–Secret] 1. 接口实现 service/dataselector.go // secret type secretCell corev1.Secretfunc (s secretCell) GetCreation() time.Time {return s.CreationTimestamp.Time }func (s secretCell) GetName() string {return s.Name }2. Secret功能…...

ESP32 Arduino EspNow点对点双向通讯

ESP32 Arduino EspNow点对点双向通讯✨本案例分别采用esp32和esp32C3之间点对点单播无线通讯方式。 &#x1f33f;esp32开发板 &#x1f33e;esp32c3开发板 &#x1f527;所需库(需要自行导入到Arduino IDE library文件夹中&#xff0c;无法在IDE 管理库界面搜索下载到该库)&am…...

Linux SID 开发指南

Linux SID 开发指南 1 前言 1.1 编写目的 介绍Linux 内核中基于Sunxi 硬件平台的SID 模块驱动的详细设计&#xff0c;为软件编码和维护提供基 础。 1.2 适用范围 内核版本Linux-5.4, Linux-4.9 的平台。 1.3 相关人员 SID 驱动、Efuse 驱动、Sysinfo 驱动的维护、应用开…...

Matlab进阶绘图第2期—线型热图

线型热图由共享X轴的多条渐变直线组成&#xff0c;其颜色表示某一特征值。 与传统热图相比&#xff0c;线型热图适应于X轴数据远多于Y轴&#xff08;条数&#xff09;的情况&#xff0c;可以很好地对不同组数据间的分布情况进行比较&#xff0c;也因此可以在一些期刊中看到它的…...

CentOS 7最小化安装后,复制粘贴和网络配置的保姆级教程(附图形界面切换)

CentOS 7最小化安装后的生存指南&#xff1a;从零配置到高效开发环境搭建刚完成CentOS 7最小化安装的新手用户&#xff0c;往往会陷入一种"手足无措"的状态——既无法从宿主机复制粘贴命令&#xff0c;又无法连接网络更新系统。这种困境就像被丢进一个没有工具的荒岛…...

Cowrie SSH蜜罐:协议层行为建模与威胁情报流水线

1. 为什么一个SSH蜜罐能比防火墙更早告诉你“有人在敲门” 你有没有过这种经历&#xff1a;某天凌晨三点&#xff0c;安全告警平台突然弹出一条“SSH暴力破解尝试激增”&#xff0c;点开一看——IP来自巴西、乌克兰、越南&#xff0c;每秒27次登录请求&#xff0c;用户名穷举了…...

机器学习赋能银河系考古:CatBoost模型高精度预测恒星年龄

1. 项目概述&#xff1a;用机器学习为银河系“测龄”在银河系考古学这个领域&#xff0c;我们就像是在研究一部没有文字记载的古老家族史。恒星&#xff0c;作为这部历史书中的“化石”&#xff0c;它们的年龄是解读银河系过去130亿年里如何诞生、成长和演化的最关键线索。然而…...

别再手动调参了!用pmdarima的auto_arima批量预测300家门店销售额,我踩过的坑都在这

批量时间序列预测实战&#xff1a;用auto_arima高效处理300家门店销售数据的避坑指南当面对300家连锁门店的日销售额预测需求时&#xff0c;传统ARIMA建模方法会迅速暴露其局限性——手动调参不仅耗时费力&#xff0c;还会因人为判断差异导致模型效果参差不齐。这正是为什么越来…...

保姆级教程:用再生龙Clonezilla Live给Ubuntu系统做全盘备份与恢复(含BIOS设置避坑)

从零掌握Clonezilla&#xff1a;Ubuntu系统全盘备份与恢复实战指南当你的Ubuntu系统突然崩溃&#xff0c;或是需要快速部署多台相同配置的机器时&#xff0c;一个可靠的系统备份方案能让你从容应对。Clonezilla作为开源备份神器&#xff0c;其强大功能不输商业软件&#xff0c;…...

国内两大门派,黑马和尚硅谷,学会两个门派的本领,成为大侠

国内两大门派&#xff0c;黑马和尚硅谷&#xff0c;学会两个门派的本领&#xff0c;成为大侠 一、我的理解 国内两大门派&#xff0c;黑马和尚硅谷&#xff0c;学会两个门派的本领&#xff0c;成为大侠。 黑马 Java 学习路线图&#xff1a; 黑马 Java 学习路线图 尚硅谷 Jav…...

告别卡顿:用微PE给旧电脑无损重装Win11,顺便教你用分区工具合理分配C盘空间

旧电脑焕新指南&#xff1a;用微PE无损重装Win11与智能分区实战 当你的旧电脑开始频繁卡顿、开机时间超过两分钟&#xff0c;甚至打开浏览器都要等待十几秒时&#xff0c;先别急着换新机。很多情况下&#xff0c;这只是系统长期使用积累的"垃圾"和不当分区导致的性能…...

保姆级教程:手把手教你用NVIDIA Surround搞定Prepar3D多屏显示(Win10/Win11通用)

沉浸式飞行体验&#xff1a;NVIDIA Surround多屏配置全攻略 飞行模拟爱好者追求的不仅是操作的真实感&#xff0c;更是视觉上的沉浸体验。当你在驾驶舱内环顾四周&#xff0c;透过虚拟舷窗看到连贯的地平线时&#xff0c;那种身临其境的感觉是单屏无法比拟的。本文将带你从零开…...

亮度与色度:揭秘视觉世界的“双重密码“

一、一个让我"开窍"的画廊故事 几年前我去参观一个摄影展&#xff0c;展览的主题很特别——“同一个世界&#xff0c;两种讲述”。展厅被一道墙分成两半&#xff0c;左边墙上挂的全是黑白摄影作品&#xff0c;右边墙上挂的全是彩色摄影作品。最有意思的是&#xff0c…...

告别低效写作:盘点2026年顶尖配置的的降AI率网站

轻松降低论文AI率在2026年已不再是难题。最新实测数据显示&#xff0c;2026年降AI率网站正以惊人的效率改变写作方式&#xff0c;覆盖AI痕迹消除、文本优化、降重处理等关键场景&#xff0c;真正实现高效去AI化&#xff0c;让论文修改不再费时费力。 一、全流程王者&#xff1a…...