百度地图jsAPI实时画出运行轨迹,车头实时指向行驶方向,设置角度偏移

本文主要是介绍百度地图jsAPI实时画出运行轨迹,车头实时指向行驶方向,设置角度偏移,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

背景:公司想要做一个基于百度地图实时展示车的运行轨迹,且在运行过程中需要车头方向随着角度进行变化。

1.先把地图构建出来,然后造一组数据用以画线。

数据格式为:

var PointArr = [ {long:	117.128937	,lat:	36.676339	,route:	30	}]

2.在地图上添加起始点图标,选用数组的第一个对象的经纬度进行定位展示。

addMarker(new BMap.Point(PointArr[0].long, PointArr[0].lat),'起点',map,PointArr);
//调用方法具体为function addMarker(point, name,mapInit,trackUnit) {if(name=="起点"){var myIcon = new BMap.Icon("css/img/startMap.svg", new BMap.Size(45,45),{anchor: new BMap.Size(20, 45)//这句表示图片相对于所加的点的位置mapStart// offset: new BMap.Size(-10, 45), // 指定定位位置// imageOffset: new BMap.Size(0, 0 - 10 * 25) // 设置图片偏移});var marker = new BMap.Marker(point,{icon:myIcon});  // 创建标注mapInit.addOverlay(marker);               // 将标注添加到地图中marker.setAnimation(BMAP_ANIMATION_BOUNCE); //跳动的动画}
}

3.这么多数据想让他展示实时画线的效果,首先是将这些数组一秒钟取出一个,具体几秒根据项目时间需要设置。然后将这些值存储到一个新的数组里面,通过这些数组拿出前后两个值进行画线。

var carMk;//先将终点坐标展示的mark对象定义
var myIcon2 = new BMap.Icon('http://developer.baidu.com/map/jsdemo/img/car.png', new BMap.Size(52,26),{anchor : new BMap.Size(27, 13)});//初始化终点坐标图标
var temporary=[];//定义中间新取出的值放到一个新的数组里面
var i = 0;
var interval = setInterval(function () {if (i >= PointArr.length) {clearInterval(interval);return;}console.log(PointArr[i]);i = i + 1;temporary.push(PointArr[i]);console.log(temporary);drowLine(map,temporary);//画线调用
}, 1000);

每一秒画一次线的方法调用:

function drowLine(map,temporary) {if(temporary && temporary.length>1){//判断数值为两个点时开始进行绘制for(var i=0;i<temporary.length-1;i++){var polyline22 = new BMap.Polyline([new BMap.Point(temporary[i].long, temporary[i].lat),new BMap.Point(temporary[i+1].long, temporary[i+1].lat)],{strokeColor:"red",strokeWeight:7,strokeOpacity:1});   //创建折线map.addOverlay(polyline22);addMarkerEnd(new BMap.Point(temporary[i+1].long,temporary[i+1].lat),'终点',map,temporary[i+1]);//添加图标}}
}
这个时候会遇到每次结束的点图标不清楚,每一次都会画上一个,最后导致页面中很多最后的图标,简直不能直视。解决方法是在画下一次图标时候先将前一个图标清除调,但

removeOverlay这个方法放在哪儿都会报找不到图标的错误,于是解决方法如下:
function addMarkerEnd(point, name,mapInit,trackUnit) {if(name=="终点"){if(carMk){//先判断第一次进来的时候这个值有没有定义,有的话就清除掉上一次的。然后在进行画图标。第一次进来时候没有定义也就不走这块,直接进行画图标mapInit.removeOverlay(carMk);}carMk = new BMap.Marker(point,{icon:myIcon2});  // 创建标注carMk.setRotation(trackUnit.route);//trackUnit.routemapInit.addOverlay(carMk);               // 将标注添加到地图中carMk.setAnimation(BMAP_ANIMATION_BOUNCE); //跳动的动画}
}

好啦,最终实现的效果就是小车可以在地图上实时进行移动,且车头方向根据值进行变化


这篇关于百度地图jsAPI实时画出运行轨迹,车头实时指向行驶方向,设置角度偏移的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/580938

相关文章

Linux中chmod权限设置方式

《Linux中chmod权限设置方式》本文介绍了Linux系统中文件和目录权限的设置方法,包括chmod、chown和chgrp命令的使用,以及权限模式和符号模式的详细说明,通过这些命令,用户可以灵活... 目录设置基本权限命令:chmod1、权限介绍2、chmod命令常见用法和示例3、文件权限详解4、ch

Linux使用nohup命令在后台运行脚本

《Linux使用nohup命令在后台运行脚本》在Linux或类Unix系统中,后台运行脚本是一项非常实用的技能,尤其适用于需要长时间运行的任务或服务,本文我们来看看如何使用nohup命令在后台... 目录nohup 命令简介基本用法输出重定向& 符号的作用后台进程的特点注意事项实际应用场景长时间运行的任务服

如何在一台服务器上使用docker运行kafka集群

《如何在一台服务器上使用docker运行kafka集群》文章详细介绍了如何在一台服务器上使用Docker运行Kafka集群,包括拉取镜像、创建网络、启动Kafka容器、检查运行状态、编写启动和关闭脚本... 目录1.拉取镜像2.创建集群之间通信的网络3.将zookeeper加入到网络中4.启动kafka集群

SpringBoot项目引入token设置方式

《SpringBoot项目引入token设置方式》本文详细介绍了JWT(JSONWebToken)的基本概念、结构、应用场景以及工作原理,通过动手实践,展示了如何在SpringBoot项目中实现JWT... 目录一. 先了解熟悉JWT(jsON Web Token)1. JSON Web Token是什么鬼

使用Spring Cache时设置缓存键的注意事项详解

《使用SpringCache时设置缓存键的注意事项详解》在现代的Web应用中,缓存是提高系统性能和响应速度的重要手段之一,Spring框架提供了强大的缓存支持,通过​​@Cacheable​​、​​... 目录引言1. 缓存键的基本概念2. 默认缓存键生成器3. 自定义缓存键3.1 使用​​@Cacheab

java如何调用kettle设置变量和参数

《java如何调用kettle设置变量和参数》文章简要介绍了如何在Java中调用Kettle,并重点讨论了变量和参数的区别,以及在Java代码中如何正确设置和使用这些变量,避免覆盖Kettle中已设置... 目录Java调用kettle设置变量和参数java代码中变量会覆盖kettle里面设置的变量总结ja

PostgreSQL如何用psql运行SQL文件

《PostgreSQL如何用psql运行SQL文件》文章介绍了两种运行预写好的SQL文件的方式:首先连接数据库后执行,或者直接通过psql命令执行,需要注意的是,文件路径在Linux系统中应使用斜杠/... 目录PostgreSQ编程L用psql运行SQL文件方式一方式二总结PostgreSQL用psql运

百度/小米/滴滴/京东,中台架构比较

小米中台建设实践 01 小米的三大中台建设:业务+数据+技术 业务中台--从业务说起 在中台建设中,需要规范化的服务接口、一致整合化的数据、容器化的技术组件以及弹性的基础设施。并结合业务情况,判定是否真的需要中台。 小米参考了业界优秀的案例包括移动中台、数据中台、业务中台、技术中台等,再结合其业务发展历程及业务现状,整理了中台架构的核心方法论,一是企业如何共享服务,二是如何为业务提供便利。

无人叉车3d激光slam多房间建图定位异常处理方案-墙体画线地图切分方案

墙体画线地图切分方案 针对问题:墙体两侧特征混淆误匹配,导致建图和定位偏差,表现为过门跳变、外月台走歪等 ·解决思路:预期的根治方案IGICP需要较长时间完成上线,先使用切分地图的工程化方案,即墙体两侧切分为不同地图,在某一侧只使用该侧地图进行定位 方案思路 切分原理:切分地图基于关键帧位置,而非点云。 理论基础:光照是直线的,一帧点云必定只能照射到墙的一侧,无法同时照到两侧实践考虑:关

如何用Docker运行Django项目

本章教程,介绍如何用Docker创建一个Django,并运行能够访问。 一、拉取镜像 这里我们使用python3.11版本的docker镜像 docker pull python:3.11 二、运行容器 这里我们将容器内部的8080端口,映射到宿主机的80端口上。 docker run -itd --name python311 -p