高德地图轨迹回放并提示具体信息

先上效果图
在这里插入图片描述
到达某地点后显示提示语:比如:12:56分驶入康庄大道、左转驶入xx大道等

<!doctype html>
<html>
<head><meta charset="utf-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="initial-scale=1.0, user-scalable=no, width=device-width"><title>轨迹回放</title><link rel="stylesheet" href="https://a.amap.com/jsapi_demos/static/demo-center/css/demo-center.css"/><style>html, body, #container {height: 100%;width: 100%;}.input-card .btn{margin-right: 1.2rem;width: 9rem;}.input-card .btn:last-child{margin-right: 0;}</style>
</head>
<body>
<div id="container"></div>
<div class="input-card"><h4>轨迹回放控制</h4><div class="input-item"><input type="button" class="btn" value="开始动画" id="start" onclick="startAnimation()"/><input type="button" class="btn" value="暂停动画" id="pause" onclick="pauseAnimation()"/></div><div class="input-item"><input type="button" class="btn" value="继续动画" id="resume" onclick="resumeAnimation()"/><input type="button" class="btn" value="停止动画" id="stop" onclick="stopAnimation()"/></div>
</div>
<script type="text/javascript" src="https://webapi.amap.com/maps?v=2.0&key=你的key值"></script>
<script>// JSAPI2.0 使用覆盖物动画必须先加载动画插件AMap.plugin('AMap.MoveAnimation', function(){var marker, lineArr = [[116.478935,39.997761],[116.478939,39.997825],[116.478912,39.998549],[116.478912,39.998549],[116.478998,39.998555],[116.478998,39.998555],[116.479282,39.99856],[116.479658,39.998528],[116.480151,39.998453],[116.480784,39.998302],[116.480784,39.998302],[116.481149,39.998184],[116.481573,39.997997],[116.481863,39.997846],[116.482072,39.997718],[116.482362,39.997718],[116.483633,39.998935],[116.48367,39.998968],[116.484648,39.999861]];var map = new AMap.Map("container", {resizeEnable: true,center: [116.397428, 39.90923],zoom: 26,pitch: 55.94919957310569,rotation: 0,viewMode: '3D', //开启3D视图,默认为关闭buildingAnimation: true, //楼块出现是否带动画zooms:[2,26],});marker = new AMap.Marker({map: map,position: [116.478935,39.997761],icon: "https://a.amap.com/jsapi_demos/static/demo-center-v2/car.png",offset: new AMap.Pixel(-13, -26),});var pathArr = [{ position: new AMap.LngLat(116.478935,39.997761),time:"到达时间1"},{ position: new AMap.LngLat(116.478939,39.997825),time:"到达时间2"},{ position: new AMap.LngLat(116.478912,39.998549),time:"到达时间3"},{ position: new AMap.LngLat(116.478998,39.998555),time:"到达时间4"},{ position: new AMap.LngLat(116.479282,39.99856),time:"到达时间5"},{ position: new AMap.LngLat(116.484648,39.999861),time:"到达时间6"},];var infoDiv = document.createElement('div');infoDiv.id = 'info';infoDiv.style.position ='fixed';infoDiv.style.left ='50%';infoDiv.style.top='0px';infoDiv.style.zIndex=100;infoDiv.style.background ='#fff';infoDiv.style.width='240px';infoDiv.style.height='50px';document.body.appendChild(infoDiv);// 绘制轨迹var polyline = new AMap.Polyline({map: map,path: lineArr,showDir:true,strokeColor: "#28F",  //线颜色// strokeOpacity: 1,     //线透明度strokeWeight: 6,      //线宽// strokeStyle: "solid"  //线样式});var passedPolyline = new AMap.Polyline({map: map,strokeColor: "#AF5",  //线颜色strokeWeight: 6,      //线宽});//已知经过的最近时间点var lastTimedPointIndex=-1;marker.on('moving', function (e) {passedPolyline.setPath(e.passedPath);map.setCenter(e.target.getPosition(),true)// 设置旋转角map.setRotation(-e.target.getOrientation());var position = e.passedPath[e.passedPath.length-1];var timedPoint = pathArr.find(function(p, index){var pointPassed = new AMap.LngLat(position.lng,position.lat).distance(p.position)<4;// 判断两点之间的直线距离是否小于4米if(pointPassed)lastTimedPointIndex = index;return pointPassed;})//如果找到有时间的点,并且该点是新经过的点,更新infoDivif(timedPoint && lastTimedPointIndex>-1){console.log(timedPoint.time)// 显示时间信息infoDiv.innerHTML = timedPoint.time;}});map.setFitView();window.startAnimation = function startAnimation () {marker.moveAlong(lineArr, {// 每一段的时长duration: 500,//可根据实际采集时间间隔设置// JSAPI2.0 是否延道路自动设置角度在 moveAlong 里设置autoRotation: true,});};window.pauseAnimation = function () {marker.pauseMove();};window.resumeAnimation = function () {marker.resumeMove();};window.stopAnimation = function () {marker.stopMove();};});
</script>
</body>
</html>

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

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

相关文章

【前端CSS3】CSS显示模式(黑马程序员)

文章目录 一、前言&#x1f680;&#x1f680;&#x1f680;二、CSS元素显示模式&#xff1a;☀️☀️☀️2.1 什么是元素显示模式2.2 块元素2.3 行内元素2.4 行块元素2.5 元素显示模式的转换 三、总结&#x1f680;&#x1f680;&#x1f680; 一、前言&#x1f680;&#x1f…

巴图自动化Modbus协议转Profinet协议网关模块连智能仪表与PLC通讯

一、现场要求:PLC作为控制器&#xff0c;仪表设备作为执行设备。执行设备可以实时响应PLC传送的指令&#xff0c;并将数据反馈给PLC&#xff0c;从而实现PLC对仪表设备的控制和监控&#xff0c;实现对生产过程的精确控制。 二、解决方案:通过巴图自动化Modbus协议转Profinet协议…

前端面试题4(浏览器对http请求处理过程)

浏览器对http请求处理过程 当我们在浏览器中输入URL并按下回车键时&#xff0c;浏览器会执行一系列步骤来处理HTTP请求并与服务器通信。下面是浏览器处理过程 1. 解析URL 浏览器首先解析输入的URL&#xff0c;提取出协议&#xff08;通常是http://或https://&#xff09;、主…

Robust Test-Time Adaptation in Dynamic Scenarios--论文阅读

论文笔记 资料 1.代码地址 https://github.com/BIT-DA/RoTTA 2.论文地址 https://arxiv.org/abs/2303.13899 3.数据集地址 coming soon 1论文摘要的翻译 测试时间自适应(TTA)旨在使预先7训练的模型适用于仅具有未标记测试数据流的测试分布。大多数以前的TTA方法已经在…

为什么要卸载手机上面的抖音?

删除抖音等社交媒体应用可能出于多种原因&#xff0c;这里列举一些常见的考虑因素&#xff1a; 1. **时间管理**&#xff1a; 抖音和其他社交媒体平台可能会占用大量时间&#xff0c;影响个人的日常生活和工作学习效率。 这个对于自己而言是一个客观存在的事情&#xff1a; 2.…

安卓请求服务器[根据服务器的内容来更新spinner]

根据服务器的内容来更新spinner 本文内容请结合如下两篇文章一起看: 腾讯云函数node.js返回自动带反斜杠 腾讯云函数部署环境[使用函数URL] 现在有这样一个需求,APP有一个下拉选择框作为版本选择,因为改个管脚就变成一个版本,客户需求也很零散,所以后期会大量增加版本,这时候每…

数据预处理:统计关联性分析/数据清洗/数据增强/特征工程实例

专栏介绍 1.专栏面向零基础或基础较差的机器学习入门的读者朋友,旨在利用实际代码案例和通俗化文字说明,使读者朋友快速上手机器学习及其相关知识体系。 2.专栏内容上包括数据采集、数据读写、数据预处理、分类\回归\聚类算法、可视化等技术。 3.需要强调的是,专栏仅介绍主…

gitLab使用流程

标题1.配置账户 git config --global user.name git config --global user.email mygitlabmali.cn 标题2.生成秘匙 ssh-keygen -t rsa -C “mygitlabmail.cn” 。 //输入命令后一直回车 &#xff0c;输入命令后一直回车&#xff08;密码可以不填&#xff09;&#xff0c;至…

Java面试题系列 - 第2天

题目&#xff1a;Java中的线程池模型及其配置策略 背景说明&#xff1a;在Java多线程编程中&#xff0c;线程池是一种高效的线程复用机制&#xff0c;能够有效管理和控制线程的创建与销毁&#xff0c;避免频繁创建和销毁线程带来的性能开销。理解和掌握线程池的配置策略对于优…

Anaconda+Pycharm两个软件从头到尾下载流程

前言&#xff1a; 1、使用教程前&#xff0c;请将电脑上的所有的Python卸载掉。再下载Anaconda&#xff0c;Anaconda这个软件里面就含有python。 彻底删除python方法&#xff1a; 1、计算机——属性——高级系统设置——环境变量 2、查看电脑用户自己设计的环境变量&#x…

【智能制造-8】输送线运动控制算法

输送线运动控制算法包含哪些内容&#xff1f; 输送线运动控制算法包含以下几个主要内容: 速度控制算法: 根据目标速度和当前实际速度,调整电机的输出功率,达到所需的输送线速度。 常见的算法包括PID控制、自适应控制等。位置/距离控制算法: 监控输送线上物料的位置或移动距离…

Xilinx FPGA:vivado关于RAM的一些零碎的小知识

一、xilinx fpga嵌入式存储单元 RAM----随机存取存储器&#xff1a;上电工作时可以随时从任何一个指定的地址写入&#xff08;存入&#xff09;或读出&#xff08;取出&#xff09;信息。缺点是一旦断电所存储的数据将随之丢失。RAM在计算机和数字系统中用来暂时性存储程序、数…

golang net.url 标准库

golang net.url 标准库 Go 语言标准库中的 net/url 包提供了用于 URL 解析、构建和查询的功能。这个包使我们能够处理 URL&#xff0c;从中提取出各个部分&#xff0c;比如协议、主机、路径和查询参数等。以下是 net/url 包中一些常用的功能&#xff1a; 解析URL&#xff1a;使…

下载安装MySQL

1.软件的下载 打开官网下载mysql-installer-community-8.0.37.0.msi 2.软件的安装 mysql下载完成后&#xff0c;找到下载文件&#xff0c;双击安装 3.配置环境变量 4.自带客户端登录与退出

护网蓝队面试

一、sql注入分类 **原理&#xff1a;**没有对用户输入项进行验证和处理直接拼接到查询语句中 查询语句中插⼊恶意SQL代码传递后台sql服务器分析执行 **从注入参数类型分&#xff1a;**数字型注入、字符型注入 **从注入效果分&#xff1a;**报错注入、布尔注入、延时注入、联…

测试引擎模拟接口实战

在上一章的内容中&#xff0c;我简单介绍了整个微服务的各个子模块&#xff0c;还封装了一些工具类。 当然&#xff0c;若还没完成上次内容的也可以点击右侧的传送门------传送门 EngineApplication 在开发测试引擎模拟接口之前&#xff0c;还需要给xxx-engine创建一个Sprin…

bpftrace几种使用实例

1. 排查内存泄漏 memory.c memory.bt 可以执行相关memory&#xff0c;用bpftrace追踪malloc和free的过程 修改memory.bt&#xff0c;加上malloc和free统计&#xff0c;重新执行 2. 验证tcp连接关闭是应用关闭还是内核关闭 nginx服务启动后&#xff0c;会处于监听状态&…

Linux python3.6安装mayavi报错

需要将vtk版本降级&#xff0c;以及uninstall pyqt5&#xff08;安装的vtk版本是9.3.1&#xff09; pip3 install vtk8.1.0 或者9.0.1 报错 Building wheels for collected packages: mayavi Building wheel for mayavi (setup.py) ... error ERROR: Command errored out…

速盾:cdn防止采集?

CDN&#xff08;Content Delivery Network&#xff09;是一种网络加速技术&#xff0c;主要用于分发网站内容给用户&#xff0c;并提供一定的安全保护。CDN的主要作用是通过将网站的静态资源&#xff08;如图片、CSS、JS等&#xff09;缓存到分布在全球各地的服务器上&#xff…

imx6ull/linux应用编程学习(9)串口应用编程

什么是串口&#xff1f; 串口全称叫做串行接口&#xff0c;串行接口指的是数据一个一个的按顺序传输&#xff0c;通信线路简单。使用两条线即可实现双向通信&#xff0c;一条用于发送&#xff0c;一条用于接收。串口通信距离远&#xff0c;但是速度相对会低&#xff0c;串口是一…