车辆选择解决方案

车辆选择解决方案

/*
* @Purpose: 添加车辆选择的功能 -> 用户在选择不同的车辆时,重新初始化系统状态,清除之前的定时器,并根据新选择的车辆设置新的定时器,以实现对新车辆状态的实时加载。
* @File Name: 车辆选择解决方案
* @Author: Caroline
* @Modifications: 2023/12/05
*/
home.php
添加页面车辆选择控件
<table class="table"><label for="vehicle_opt" class="vehicle_option">车辆选择</label><select id="vehicle_opt" class="vehicle_option"><option value="obu_01" class="content-value">obu_01</option><option value="obu_02" class="content-value">obu_02</option><option value="obu_03" class="content-value">obu_03</option><option value="obu_04" class="content-value">obu_04</option><option value="obu_05" class="content-value">obu_05</option><option value="obu_06" class="content-value">obu_06</option><option value="obu_07" class="content-value">obu_07</option><option value="obu_08" class="content-value">obu_08</option><option value="obu_09" class="content-value">obu_09</option></select>
</table>

Pages_model.php

修改原本的$obu_id值为我们自己获取的obu_id$obu_id_val,并POST到后端服务器。

	public function get_index_data($obu_id_val,$application_id){$data = array();// 获取百度地图 JavaScript API 的 URL$data['baidu_map_js_url'] = "http://api.map.baidu.com/api?v=3.0&ak={$this->get_baidu_app_key()}";$obu_id_val = $this->POST_DATA("obu_id");if(empty($obu_id_val)){$obu_id_val = common_get_default_obu_id();}// 将获取到的 obu_id 存储在返回的数据数组中$data['obu_id'] = $obu_id_val;if(empty($application_id)){$application_id = common_get_default_app_id(); }$data['application_id'] =$application_id; return $data;}

bd_vehicle.js
1. systemLoadStatus()函数解析

这个函数主要用于系统加载状态,包括获取车辆坐标数据并在地图上绘制轨迹。

function systemLoadStatus() {// 检查系统是否已准备就绪if (systemReady) {// 如果systemReady为true,表示系统已经准备好,清空#systemReadStatus元素的html内容$('#systemReadStatus').html("");// 清除systemReadStatusInterval定时器clearInterval(systemReadStatusInterval);// 结束函数的执行return;} else {// 系统没有准备就绪// 首次启动,加载近期全部坐标,在加载成功后,绘制线路$('#systemReadStatus').html("Loading.");$.post(app_ctl + '/orbit', {option: 0,application_id: application_id_val,obu_id: obu_id_val,demo_flag: demo}, function (data, status) {//console.log(status == "success",data,data['request'] == "success");if (status == "success" && data && data.request == "success") {// 将 systemReady 设置为 true,表示系统已准备好。systemReady = true;console.log(data.msg);......}});}
}
2. loadVehicleStatus()函数解析

这个函数主要用于获取车辆状态数据,更新页面上的相关信息,包括显示车辆编号、更新车辆状态列表以及在地图上绘制轨迹等。

function loadVehicleStatus() {// 画图和访问过程,不要重复访问// 检查地理信息和状态更新标志// 如果 geoUpdateFlag 为 false 或 statueUpdateFlag 为 true,则输出相关标志的值到控制台,并结束函数执行。if (!geoUpdateFlag || statueUpdateFlag) {console.log({"geoUpdateFlag": geoUpdateFlag,"statueUpdateFlag": statueUpdateFlag});return;}// 访问// 设置状态更新标志,设置为true,表示开始状态更新statueUpdateFlag = true;// post请求获取车辆状态$.post(app_ctl + '/status', {option: 0,application_id: application_id_val,obu_id: obu_id_val,demo_flag: demo}, function (data, status) {// 处理ajax请求的回调if (status == "success" && data && data.request == "success") {......} else {console.log("car-status error!", data);}//完成访问,重置状态更新标志statueUpdateFlag = false;});
}
3. 监听选择框的改变事件
$('select').on('change', function() {// 从选择框中获取当前选中的车辆valueobu_id_val = $(this).children('option:selected').val();console.log("车辆选择: " + obu_id_val);// 清除之前设置的systemReadStatusInterval和status_interval定时器clearInterval(systemReadStatusInterval);clearInterval(status_interval);// 重置系统状态标记,重置系统的准备状态、地理位置更新标记以及状态更新标记,为重新加载数据做准备systemReady = false;geoUpdateFlag = false; //首次更新标记statueUpdateFlag = false;// 重新设置定时器//加载地图、坐标、轨迹systemReadStatusInterval = setInterval(systemLoadStatus, 1000);//加载车辆实时状态 status_interval = setInterval(loadVehicleStatus, 2000);
});
4. 遇到的问题

清除之前的定时器之后,没有初始化系统状态的标记systemReady,导致重新启动定时器之后orbit没有重新加载,所以清除定时器之后要重置系统状态标记,重置系统的准备状态、地理位置更新标记以及状态更新标记,为重新加载数据做准备。

systemReady = false;
geoUpdateFlag = false; //首次更新标记
statueUpdateFlag = false;

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

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

相关文章

魔塔社区使用llamafactory微调AI阅卷试题系统

启动 LLaMA-Factory 1. 安装 LLaMA-Factory 执行安装指令 git clone --depth 1 https://github.com/hiyouga/LLaMA-Factory.git cd LLaMA-Factory pip install -e ".[torch,metrics]"解决依赖冲突 如果遇到依赖冲突&#xff0c;可使用以下命令安装&#xff0c;不…

程序化广告行业(51/89):Cookie映射与移动设备ID映射解析

程序化广告行业&#xff08;51/89&#xff09;&#xff1a;Cookie映射与移动设备ID映射解析 在当今数字化营销的浪潮中&#xff0c;程序化广告已经成为企业精准触达目标客户的重要手段。作为一名对程序化广告充满兴趣的学习者&#xff0c;我希望通过这篇博客和大家一起深入探索…

内网服务器centos7安装jdk17

1. 下载 JDK 17 安装包&#xff08;在外网环境操作&#xff09; 在可联网的机器上下载 JDK 17 的压缩包&#xff08;推荐使用 OpenJDK&#xff09;&#xff1a; OpenJDK 官方源&#xff1a; Adoptium Eclipse Temurin Azul Zulu 直接下载命令示例&#xff08;在外网机器上执行…

【学Rust写CAD】21 2D 点(point.rs)

源码 //matrix/point.rs use std::ops::Mul; use super::algebraic_units::{Zero, One}; use super::generic::Matrix;/// 点坐标结构体 #[derive(Debug, Clone, Copy, PartialEq)] pub struct Point<X, Y>(Matrix<X, Y, One, Zero, Zero, One>);impl<X, Y>…

《AI大模型应知应会100篇》第7篇:Prompt Engineering基础:如何与大模型有效沟通

第7篇&#xff1a;Prompt Engineering基础&#xff1a;如何与大模型有效沟通 摘要 Prompt Engineering&#xff08;提示工程&#xff09;是与大模型高效沟通的关键技能。通过精心设计的Prompt&#xff0c;可以让模型生成更准确、更有用的结果。本文将从基础知识到高级策略&…

Java高频面试题1:Java SE

一、Java概述 1. Java语言的特点&#xff1f; 面向对象&#xff1a;封装、继承、多态。跨平台&#xff1a;通过JVM实现“一次编写&#xff0c;到处运行”。内存管理&#xff1a;自动垃圾回收&#xff08;GC&#xff09;&#xff0c;避免手动内存管理。多线程&#xff1a;内置…

基于RapidIO接口的DSP+GPU工业AI实时计算解决方案

基于RapidIO接口的DSPGPU工业AI实时计算解决方案是一种面向高性能、低延迟工业应用的异构计算架构&#xff0c;适用于工业自动化、机器视觉、预测性维护、机器人控制等场景。以下是该方案的核心设计思路和技术要点&#xff1a; 1. 方案背景与目标 工业需求&#xff1a; 工业…

SQL DB 数据类型

SQL DB 数据类型 引言 在数据库管理系统中,数据类型是定义和存储数据的方式。SQL(结构化查询语言)数据库中的数据类型决定了数据的存储格式、大小、取值范围以及如何处理数据。合理选择和使用数据类型对于确保数据库性能、数据完整性和应用程序的准确性至关重要。 SQL 数…

常见电源模块设计

目录 1. 5V电源模块 2. 3.3V电源模块 3. 1.9V电源模块 4. 220V转12V电源模块 1. 5V电源模块 参考电路 电路说明&#xff1a; 这个电路采用的是稳压芯片78L05&#xff0c;我是用的12V的电源模块转成为5V,为后续的供电。 2. 3.3V电源模块 参考电路&#xff1a; 电路说明…

python操作es

1、常用操作 ### 创建索引 bash curl -u elastic:123 -X PUT -H "Content-Type: application/json" -d mapping.json "http://0.0.0.0:9200/ai_kg_extraction_new_lower_tag_index" ### 删除索引 bash curl -u elastic:123 -X DELETE "http://0.0…

记一个.NET AOT交叉编译时的坑

记一个.NET AOT交叉编译时的坑 背景&#xff1a; 使用.NET9开发的Avalonia项目需要部署到Linux-arm64 踩坑&#xff1a; 根据官方AOT交叉编译文档配置后执行打包 dotnet publish -r linux-arm64提示error : The PrivateSdkAssemblies ItemGroup is required for _ComputeA…

【Linux篇】探索进程地址空间:计算机背后的虚拟世界

进程地址空间的奥秘&#xff1a;让你理解程序如何在计算机中生存 一. 程序地址空间1.1 基本概念1.2 虚拟内存管理1.3 为什么存在虚拟地址空间1.3.1 意义 2. 最后 本文将介绍进程地址空间的基本概念与结构&#xff0c;帮助读者理解操作系统如何管理和分配内存。进程地址空间指的…

17查询文档的方式

目录 1.鼠标放在你要查询的地方或者选中&#xff0c;按FnF1 2Assistant文档 3帮助菜单界面 1.鼠标放在你要查询的地方或者选中&#xff0c;按FnF1 2Assistant文档 3帮助菜单界面 大家一定要有 查询文档 的意识!! 未来实际开发中,一定会用到很多的第三方库和框架的. 很可能用到的…

壹起航:引领中国工厂迈向全球市场的先锋

在全球化的浪潮中&#xff0c;中国工厂正积极寻求拓展海外市场的新机遇。面对激烈的国际竞争&#xff0c;如何脱颖而出&#xff0c;成为行业翘楚&#xff1f;壹起航凭借其深厚的行业积淀和创新的营销理念&#xff0c;为中国工厂提供了全方位的出海解决方案。 一、构建国际化外…

“数据导航仪”:企业迁移知识库如何赋能精准决策

在全球化与区域经济一体化的浪潮下&#xff0c;企业迁移已成为经济发展的重要现象。 无论是为了拓展市场、降低成本&#xff0c;还是为了寻找更好的政策环境&#xff0c;企业迁移都牵动着无数从业者的心。 然而&#xff0c;面对海量且分散的企业迁移信息&#xff0c;金融机构…

理解激活函数,多个网络层之间如何连接

1. 激活函数如何在两个层之间作用 如果不在两个层之间添加激活函数&#xff0c;模型将无法学习非线性关系&#xff0c;表现出像线性模型一样的局限性。 LeakyReLU(0.2) 是一个激活函数&#xff0c;它的作用是对每一层的输出进行非线性转换。激活函数通常在神经网络中用于增加网…

红帽Linux怎么重置密码

完整流程 ●重启操作系统&#xff0c;进入启动界面 ●然后按进入选择项界面 ●找到linux单词开头的那一行&#xff0c;然后移动到该行末尾&#xff08;方向键移动或者使用键盘上的end&#xff09;&#xff0c;在末尾加入rd.break ●按ctrl x进入rd.break模式 ●在该模式下依次…

pycharm与python版本

python 3.6-3.9 pycharm 2021版本搭配最好 python 3.8 pycharm 2019版本搭配最好 pycharm各版本下载

Java系统集成AI大模型:是否需要训练模型及实现路径

越来越多的Java系统希望通过集成AI大模型能力来提升智能化水平。然而&#xff0c;许多开发者在面对这一任务时&#xff0c;常常会有一个疑问&#xff1a;是否需要训练AI大模型才能实现这一目标&#xff1f;本文将深入探讨这一问题&#xff0c;并提供详细的解决方案。 一、是否…

论文阅读笔记:Denoising Diffusion Implicit Models (3)

0、快速访问 论文阅读笔记&#xff1a;Denoising Diffusion Implicit Models &#xff08;1&#xff09; 论文阅读笔记&#xff1a;Denoising Diffusion Implicit Models &#xff08;2&#xff09; 论文阅读笔记&#xff1a;Denoising Diffusion Implicit Models &#xff08…