vue+百度地图api实现车辆轨迹运动

1.效果图

2.准备工作 public/index

index.html 
<script src="http://api.map.baidu.com/api?type=webgl&v=2.0&ak=sRDDfAKpCSG5iF1rvwph4Q95M6tDCApL"></script>   

3.html

<div class="normal-box"><span class="info-title">车辆定位</span></div><div id="vehicleMap"></div>

4.js

data() {return {url: '/api/sysHomepagesignin/list',// 页面查询数据queryData: {limit: 10,page: 1,totalRecord: 0,startTime: '2020-01-01',endTime: '2020-01-01'},map: '',queryVehicleData: {// 获取列表参数limit: 10,page: 1,totalRecord: 0,// licensePlateNumber: '',sbType: 2},vehicleData: [],// 山东青岛车辆轨迹坐标PointArr: [{ lat: 36.10339957700999, lng: 120.4207801005104 },{ lat: 36.10349055332635, lng: 120.42113539348455 },{ lat: 36.10370795896673, lng: 120.42162977768736 },{ lat: 36.10411490190429, lng: 120.42166901055167 },{ lat: 36.104232027406695, lng: 120.42185015059275 },{ lat: 36.10425620255758, lng: 120.42202022562539 },{ lat: 36.104265908631284, lng: 120.42208225102176 },{ lat: 36.104399968669526, lng: 120.42187425183421 },{ lat: 36.10452708476511, lng: 120.42076268466177 },{ lat: 36.10480132817409, lng: 120.4196557913201 },{ lat: 36.10560773716036, lng: 120.418951386886 },{ lat: 36.10621159088823, lng: 120.41900182905378 },{ lat: 36.1064641068988, lng: 120.41992809616544 },{ lat: 36.10679444086644, lng: 120.42102125032955 },{ lat: 36.107010189089046, lng: 120.42182982905027 },{ lat: 36.107014665948654, lng: 120.42193587265254 },{ lng: 120.42201589513277, lat: 36.10700627324672 },{ lng: 120.42236704579075, lat: 36.10708566579729 },{ lng: 120.42269817692573, lat: 36.107201270041955 },{ lng: 120.42239277578172, lat: 36.10812797579566 },{ lng: 120.42175457671763, lat: 36.10947659586882 },{ lng: 120.42144906678747, lat: 36.11028554037044 },{ lng: 120.4213722360578, lat: 36.110547069787465 },{ lng: 120.42134433787885, lat: 36.110691285540966 },{ lng: 120.42234193234574, lat: 36.110931417305515 },{ lng: 120.42374305054953, lat: 36.11109804633305 },{ lng: 120.42478859440246, lat: 36.111102173671576 },{ lng: 120.42606467439863, lat: 36.11129314178323 },{ lng: 120.4274220550685, lat: 36.11148065963647 },{ lng: 120.42831965719076, lat: 36.111638311669736 },{ lng: 120.42839951065358, lat: 36.11164240198062 },{ lng: 120.42869196887202, lat: 36.1116737914188 },{ lng: 120.43031048017785, lat: 36.11190642360766 },{ lng: 120.43239173942534, lat: 36.11229570404404 },{ lng: 120.43368467575368, lat: 36.11281195352835 },{ lng: 120.43371757862009, lat: 36.11284016439977 },{ lng: 120.43379230066179, lat: 36.11284161798212 },{ lng: 120.43441423254144, lat: 36.113205746094536 },{ lng: 120.43549342023326, lat: 36.11391074053337 },{ lng: 120.43637497341942, lat: 36.11441797319607 },{ lng: 120.4365024200745, lat: 36.11445405475196 },{ lng: 120.43670459776231, lat: 36.11458083085174 },{ lng: 120.43745246924915, lat: 36.11507070008782 },{ lng: 120.43821097991501, lat: 36.115416050767585 },{ lng: 120.43823585473245, lat: 36.11541929557907 },{ lng: 120.43859812511984, lat: 36.115583971494395 },{ lng: 120.43901701857004, lat: 36.115714318017346 },{ lng: 120.43928467292172, lat: 36.11582517772885 },{ lng: 120.43959708522435, lat: 36.115963587312805 },{ lng: 120.43986466921422, lat: 36.116047547858166 },{ lng: 120.44007952157578, lat: 36.11611896447754 },{ lng: 120.440167025596, lat: 36.11612294605039 },{ lng: 120.44024360205321, lat: 36.116138815526504 },{ lng: 120.44026150723737, lat: 36.11614702160796 },{ lng: 120.44027344364953, lat: 36.11615215895656 },{ lng: 120.44028836484941, lat: 36.1161593311561 },{ lng: 120.44034209724579, lat: 36.116201960713745 },{ lng: 120.44048233691922, lat: 36.116254585044935 },{ lng: 120.4405738257871, lat: 36.116276646228826 },{ lng: 120.44073595695149, lat: 36.11635856195875 },{ lng: 120.44115463412841, lat: 36.11652357056175 },{ lng: 120.44118546544034, lat: 36.11653994619434 },{ lng: 120.44121529948468, lat: 36.1165533090833 }],myIcon: '',drivingPoint: '',terminalPoint: '',interval: null,carMk: ''}},
// 初始化地图initMap() {var map = new BMapGL.Map('vehicleMap') // 创建Map实例map.centerAndZoom(new BMapGL.Point(120.214935, 30.256576), 12) // 初始化地图,设置中心点坐标和地图级别map.enableScrollWheelZoom(true) // 开启鼠标滚轮缩放this.map = mapthis.carDrawFn()},// 车辆轨迹carDrawFn() {// 第一条线路var i = 0this.interval = setInterval(() => {if (i >= this.PointArr.length) {clearInterval(this.interval)return}this.drowLine(this.map, this.PointArr[i], this.PointArr[i + 1]) //画线调用i = i + 1}, 1000)},// 第一条 划线drowLine(map, PointArr, PointArrNext) {this.drivingPoint = new BMapGL.Icon(require('@/assets/images/che.jpg'),new BMapGL.Size(52, 26),{anchor: new BMapGL.Size(27, 13),imageSize: new BMapGL.Size(70, 35)})//终点图标this.terminalPoint = new BMapGL.Icon(require('@/assets/images/zhongdian.png'),new BMapGL.Size(45, 45),{anchor: new BMapGL.Size(20, 45),imageSize: new BMapGL.Size(45, 45)})if (PointArrNext != undefined) {var polyline = new BMapGL.Polyline([new BMapGL.Point(PointArr.lng, PointArr.lat),new BMapGL.Point(PointArrNext.lng, PointArrNext.lat)],{strokeColor: 'skyblue',strokeWeight: 7,strokeOpacity: 1}) //创建折线map.addOverlay(polyline)this.addMarkerEnd(new BMapGL.Point(PointArrNext.lng, PointArrNext.lat),'小车行驶',map,PointArrNext,new BMapGL.Point(PointArr.lng, PointArr.lat)) //添加图标} else {return}},// 第一条 添加行驶和终点图标addMarkerEnd(point, name, mapInit, trackUnit, prePoint) {if (name == '小车行驶') {if (this.carMk) {mapInit.removeOverlay(this.carMk)}// debugger;this.carMk = new BMapGL.Marker(point, {icon: this.drivingPoint}) // 创建标注this.carMk.setRotation(trackUnit.route) //trackUnit.routethis.carMk.setRotation(this.getAngle(point, prePoint) - 90) // 旋转的角度this.map.addOverlay(this.carMk) // 将标注添加到地图中} else {mapInit.removeOverlay(this.carMk)this.carMk = new BMapGL.Marker(point, {icon: this.terminalPoint}) // 创建标注mapInit.addOverlay(this.carMk)}},//获得角度的函数getAngle(n, next) {var retvar w1 = (n.lat / 180) * Math.PIvar j1 = (n.lng / 180) * Math.PIvar w2 = (next.lat / 180) * Math.PIvar j2 = (next.lng / 180) * Math.PIret =4 * Math.pow(Math.sin((w1 - w2) / 2), 2) -Math.pow(Math.sin((j1 - j2) / 2) * (Math.cos(w1) - Math.cos(w2)),2)ret = Math.sqrt(ret)var temp = Math.sin((j1 - j2) / 2) * (Math.cos(w1) + Math.cos(w2))ret = ret / tempret = (Math.atan(ret) / Math.PI) * 180ret += 90if (j1 - j2 < 0) {if (w1 - w2 < 0) {ret} else {ret = -ret + 180}} else {if (w1 - w2 < 0) {ret = 180 + ret} else {ret = -ret}}return ret},
mounted() {this.initMap()},

5.css

body,
html,
#vehicleMap {width: 100%;/* bug:必须要设置高,否则地图不显示,不能设置单位为%,比如90% */height: 90vh;margin: 0;padding: 0;overflow: hidden;font-family: '微软雅黑';
}

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

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

相关文章

Eureka切换Nacos时发现两个注册中心的解决方法

报错信息如下&#xff0c;意思是发现了两个注册中心 Field autoServiceRegistration in org.springframework.cloud.client.serviceregistry.AutoServiceRegistrationAutoConfiguration required a single bean, but 2 were found: - nacosAutoServiceRegistration: defined…

Java版直播商城:电商源码、小程序、三级分销及 免 费 搭 建 方案

一、技术选型 java开发语言&#xff1a;java是一种跨平台的编程语言&#xff0c;适用于大型企业级应用开发。使用java开发直播商城可以保证系统的稳定性和可扩展性。 spring boot框架&#xff1a;spring boot是一个快速构建spring应用的框架&#xff0c;简化了开发过程&#xf…

特征工程(二)

特征工程&#xff08;二&#xff09; 特征理解 理解手上的数据&#xff0c;就可以更好的明确下一步的方向。从繁杂的切入点中&#xff0c;主要着眼于一下几个方面&#xff1a; 结构化数据与非结构化数据&#xff1b;数据的4个等级&#xff1b;识别数据中存在的缺失值&#xf…

FS【1】:SSP

文章目录 前言1. Abstract2. Introduction2.1. Motivation2.1.1. Few-shot Segmentation (FSS) Task2.1.2. Few-shot Segmentation (FSS) Problem 2.2. Contribution 3. Methods3.1. Motivation3.2. Overview of the architecture4.3. Self-support Prototype4.4. Adaptive Sel…

RT-Thread基于AT32单片机的485应用开发(二)

在上篇RT-Thread基于AT32单片机的485应用开发&#xff08;一&#xff09;中实现了RS485收发&#xff0c;但总觉得效率不高&#xff0c;函数封装也不完善。考虑到RS485总线应用都是主从式结构&#xff0c;比如工业领域常用的Modbus协议&#xff0c;都是以帧为单位进行收发&#…

慕课热搜01

uniapp过滤器使用 创建一个过滤器&#xff1a; 在入口函数注册过滤器 // 注册过滤器 import * as filters from "./filters/index.js"Object.keys(filters).forEach(key>{Vue.filter(key,filters[key]) })使用过滤器&#xff1a; onPageScroll , uniapp监听滚动…

花为缘享奢APP震撼上线,2024奢侈品行业创业首选平台

中国是全球最大的奢侈品消费国&#xff0c;并且有着持续的消费增长潜力。普华永道在今年2月发布的《中国内地及香港地区奢侈品市场洞察》报告显示&#xff0c;随着旅游和社交活动逐渐步入正轨&#xff0c;全球奢侈品市场正稳步复苏&#xff0c;预计至2025年全球市场规模将以11%…

KVM系统虚拟化性能测试过程总结

buildroot编译 为啥要用buildroot 支持很多&#xff1a;交叉编译工具链、根文件系统生成、内核映像编译和引导加载程序编译。使用简单&#xff1a;使用类似内核的menuconfig、gconfig和xconfig配置界面&#xff0c;使用buildroot构建基本系统很容易。支持很多的包&#xff1a…

LightGBM原理和调参

背景知识 LightGBM(Light Gradient Boosting Machine)是一个实现GBDT算法的框架&#xff0c;具有支持高效率的并行训练、更快的训练速度、更低的内存消耗、更好的准确率、支持分布式可以处理海量数据等优点。 普通的GBDT算法不支持用mini-batch的方式训练&#xff0c;在每一次…

一键修复所有dll缺失的工具,dll修复工具下载使用教程

在计算机使用过程中&#xff0c;我们经常会遇到各种软件或系统错误提示&#xff0c;其中最常见的就是“找不到指定的模块”或“无法找到某某.dll文件”。Dll是动态链接库的缩写&#xff0c;它是Windows操作系统中的重要组成部分&#xff0c;负责提供各种功能和资源给应用程序使…

大模型PEFT技术原理(一):BitFit、Prefix Tuning、Prompt Tuning

随着预训练模型的参数越来越大&#xff0c;尤其是175B参数大小的GPT3发布以来&#xff0c;让很多中小公司和个人研究员对于大模型的全量微调望而却步&#xff0c;近年来研究者们提出了各种各样的参数高效迁移学习方法&#xff08;Parameter-efficient Transfer Learning&#x…

【语义解析:连接自然语言与机器智能的桥梁】

语义解析&#xff1a;连接自然语言与机器智能的桥梁 语义解析技术可以提高人机交互的效率和准确性&#xff0c;在自然语言处理、数据分析、智能客服、智能家居等领域都有广泛的应用前景。特别是在大数据时代&#xff0c;语义解析能够帮助企业更快速地从大量的数据中获取有用的…