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

news/2024/4/25 22:46:14/文章来源:https://blog.csdn.net/m0_69803146/article/details/129184204
问题
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

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

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

相关文章

spring(六)--------spring的扫描机制

spring的扫描一般可以通过两种方式&#xff1a; 测试类&#xff1a; Component public class Scan_A {PostConstructpublic void init(){System.out.println("-----------Scan_A");}} 1&#xff09;、ComponentSscan注解 public class ComponentScanTest {public…

前端JS调用grpc服务(cpp)

参考文献&#xff1a;https://blog.csdn.net/qq_45634989/article/details/128151766依赖文件&#xff1a;protoc-v3-20.1.exe grpc_cpp_plugin.exe // 生成cpp中间文件protoc-gen-grpc-web.exe // 生成js中间文件grpcwebproxy-v0.13.0-win64 1.4.0.exe // 负责代理的端口映射新…

运营级手机直播平台源码 短视频直播带货APP源码

短视频直播带货APP源码 全开源原生直播APP源码 前端&#xff1a;原生APP 安卓端&#xff1a;Java 苹果端&#xff1a;OC 后台&#xff1a;PHP 数据库&#xff1a;Mysql 技术框架&#xff1a;Thinkphp5.1 系统特色功能包括&#xff1a;礼物系统&#xff1b;提现方式&#…

WAF:ModSecurity on Nginx(15)

预备知识 Nginx概述 Nginx ("engine x") 是一个高性能的HTTP和 反向代理 服务器&#xff0c;也是一个 IMAP/POP3/SMTP服务器。 Nginx 是由 Igor Sysoev 为俄罗斯访问量第二的 Rambler.ru 站点开发的&#xff0c;第一个公开版本0.1.0发布于2004年10月4日。其将源代…

指针的进阶【上篇】

文章目录&#x1f4c0;1.字符指针&#x1f4c0;2.指针数组&#x1f4c0;3.数组指针&#x1f4bf;3.1.数组指针的定义&#x1f4bf;3.2. &数组名VS数组名&#x1f4bf;3.3.数组指针的使用&#x1f4c0;1.字符指针 int main() {char ch w;char* pc &ch;// pc就是字符指…

智慧物联网系统源码:一个用于数据的收集、处理、可视化、设备管理、设备预警、报警的平台

项目简介&#xff1a; 一个用于数据的收集、处理、可视化、设备管理、设备预警、报警的平台&#xff0c;通过平台将所有设备连接起来&#xff0c;为上层应用提供设备的管理、数据收集、远程控制等核心物联网功能。 支持支持远程对设备进行实时监控、故障排查、远程控制&#…

PPP点到点协议认证之PAP认证

PPP点到点协议认证之PAP认证 需求 如图配置接口的IP地址将R1配置为认证端&#xff0c;用户名和密码是 huawei/hcie &#xff0c;使用的认证方式是pap确保R1和R2之间可以互相ping通 拓扑图 配置思路 确保接口使用协议是PPP确保接口的IP地址配置正确在R1 的端口上&#xff0c…

Pycharm远程服务器常见问题

2023年02月23日 问题描述&#xff1a;Pycharm远程服务器跑代码时&#xff0c;不小心把Pycharm关掉了&#xff0c;但服务器代码还在运行&#xff1f; 解决办法&#xff1a;kill进程 先用watch -n 0.5 nvidia_smi查看进程&#xff0c;然后kill -9 <进程> 1、nvidia-smi…

ip公司和soc公司是什么?

IP 公司和 SoC 公司都是半导体行业的重要组成部分&#xff0c;但它们的角色和职责略有不同。IP&#xff08;Intellectual Property&#xff09;公司主要提供可重用的知识产权组件&#xff0c;也称为 IP 核或 IP 模块&#xff0c;这些组件可以在设计芯片的过程中被集成到芯片中。…

Unity 对接 ML-Agents 初探

一、ML-Agents 是什么 The Unity Machine Learning Agents Toolkit (ML-Agents) is an open-source project that enables games and simulations to serve as environments for training intelligent agents. We provide implementations (based on PyTorch) of state-of-the…

回归预测 | MATLAB实现BO-CNN-GRU贝叶斯优化卷积门控循环单元多输入单输出回归预测

回归预测 | MATLAB实现BO-CNN-GRU贝叶斯优化卷积门控循环单元多输入单输出回归预测 目录回归预测 | MATLAB实现BO-CNN-GRU贝叶斯优化卷积门控循环单元多输入单输出回归预测效果一览基本介绍模型描述程序设计参考资料效果一览 基本介绍 基于贝叶斯(bayes)优化卷积神经网络-门控循…

Unity(三)--导入3d模型并实现UGUI界面上嵌入3d模型

Unity支持的常用模型格式及建模软件: 格式建模软件网格动画材质骨骼FBX3DMax,C4D,Blender,Maya等√√√√OBJ3DMax,C4D,Blender,Maya等√目录 导入模型并调整好位置创建2D场景(UGUI)使3d模型显示在图片前面方法一:使用Render Texture注意点导入模型并调整好位置 以FBX为例,…

百万数据excel导出功能如何实现?

最近我做过一个MySQL百万级别数据的excel导出功能&#xff0c;已经正常上线使用了。 这个功能挺有意思的&#xff0c;里面需要注意的细节还真不少&#xff0c;现在拿出来跟大家分享一下&#xff0c;希望对你会有所帮助。 原始需求&#xff1a;用户在UI界面上点击全部导出按钮…

如果不使用时钟同步工具,linux如何解决时钟同步问题?仅需要一行命令即可。

这是一篇日记&#xff0c;记录了上帝下凡出手&#xff0c;解救苍生与水火之中的神奇文章&#xff0c;如果你也有过类似的经历&#xff0c;留言关注&#xff0c;咱们交流一下~ 目录 背景&#xff08;如果不想知道可以跳过&#xff09; 一行神奇的命令 一段一段的研究 总结 背…

go atomic 原子操作

在 go 语言 string 类型思考 中有说到 -race 竞态检测&#xff0c;多个 goroutine 并发读写同一个变量是会触发。竞态竞争导致的问题是&#xff1a;结果不可控&#xff0c;你也无法预料最终的结果是什么。 比较棘手的竞态竞争会发生在一些切片类型上&#xff0c;在遍历读取切片…

221 最大正方形

#221 最大正方形 题目描述 在一个由 0 和 1 组成的二维矩阵内&#xff0c;找到只包含 1 的最大正方形&#xff0c;并返回其面积。 示例 1&#xff1a; 输入&#xff1a;matrix [["1","0","1","0","0"],["1",&…

【LeetCode】2357. 使数组中所有元素都等于零

2357. 使数组中所有元素都等于零 题目描述 给你一个非负整数数组 nums 。在一步操作中&#xff0c;你必须&#xff1a; 选出一个正整数 x &#xff0c;x 需要小于或等于 nums 中 最小 的 非零 元素。nums 中的每个正整数都减去 x。 返回使 nums 中所有元素都等于 0 需要的 …

经典设计模式MVC理解

MVC是模型(Model)、视图(View)、控制器(Controller)的简写&#xff0c;将业务逻辑、数据、显示分离的方法来组织代码。今天简单回顾一下。 mvc释义理解 M代表模型(Model)&#xff0c;表示业务规则封装。在MVC的三个部件中&#xff0c;模型拥有最多的处理任务。被模型返回的数据…

图表类可视化开发采坑记录之旅3

如图所示的扇形图样式改造&#xff1a; 开发框架&#xff1a; 基于vue2&#xff0c;echarts5.0.0 基于组件&#xff1a; html代码&#xff1a; <div class"showCanvas"><div id"midError"></div> </div> css代码&#xff1a; …

【华为OD机试模拟题】用 C++ 实现 - 去除多余空格(2023.Q1)

最近更新的博客 华为OD机试 - 入栈出栈(C++) | 附带编码思路 【2023】 华为OD机试 - 箱子之形摆放(C++) | 附带编码思路 【2023】 华为OD机试 - 简易内存池 2(C++) | 附带编码思路 【2023】 华为OD机试 - 第 N 个排列(C++) | 附带编码思路 【2023】 华为OD机试 - 考古…