前端 百度地图绘制路线加上图片

news/2024/4/20 0:14:09/文章来源:https://blog.csdn.net/m0_52611940/article/details/130363430

使用百度官方示例的方法根据起终点经纬度查询驾车路线但是只是一个线路

<template><div class="transportInfo"><div id="mapcontainer" class="map">11</div><div class="collapse"><el-collapse v-model="activeNames" @change="handleChange"><el-collapse-item title="运输详情" name="1"><div class="transportHead"><div class="img"><img src="@/assets/images/sj.png" /></div><div><div><span class="label">运输人员:</span><span class="value">李荣/12345678901</span></div><div><span class="label1">浙A·DA4563</span><span class="value1">配送中</span></div></div></div><div class="timeline"><el-timeline><el-timeline-itemv-for="(activity, index) in activities":key="index":timestamp="activity.timestamp":color="activity.color"placement="top"><span style="color:rgba(12, 111, 255, 1)">{{activity.person}}</span><span style="color:rgba(26, 26, 26, 1)">{{activity.renwu}}</span></el-timeline-item></el-timeline></div></el-collapse-item></el-collapse></div></div>
</template>
<script>
import working from '@/assets/images/working.png'
import circle from '@/assets/images/circle.png'
export default {data() {return {activeNames: ['1'],activities: [{person: '主管部门',renwu: '创建送货单',timestamp: '2023年3月3日   18:00',color: 'rgba(0, 180, 42, 1)',size: 'normal '},{person: '运输人员 李荣',renwu: '开始运输',timestamp: '2018-04-13'},{person: '运输人员 李荣',renwu: '进行核验',timestamp: '2018-04-13'},{person: '工地人员 王狄锋',renwu: '确认签收',timestamp: '2018-04-11'}]}},created() {},mounted() {// 百度地图API功能// var map = new BMap.Map('allmap')// map.centerAndZoom(new BMap.Point(116.404, 39.915), 11)// var p1 = new BMap.Point(116.301934, 39.977552)// var p2 = new BMap.Point(116.508328, 39.919141)// var driving = new BMap.DrivingRoute(map, {//   renderOptions: {//     map: map,//     autoViewport: true//   }// })// driving.search(p1, p2)setTimeout(() => {$(document).ready(function() {// var car1 = [//   ['113.208619', '23.170208', '广州', '装车', '2016-12-05 19:47:03'],//   ['112.622218', '26.979794', '', '装车', '2016-12-05 19:47:03'],//   [//     '113.006332',//     '28.263503',//     '长沙',//     '当前位置',//     '2016-12-05 19:47:03'//   ],//   ['111.731111', '40.842', , '呼和浩特', '暂未到达目的地']// ]var car2 = [['120.230199', '30.215376', '', '杭州', '起点'],['108.945456', '34.366566', '西安', '当前位置', '4km'],['87.504831', '43.937895', , '乌鲁木齐', '终点']]var mp = new BMap.Map('mapcontainer', { enableMapClick: false })mp.centerAndZoom(new BMap.Point(112.438233, 34.654336), 6)mp.enableScrollWheelZoom()// currentLocation(['113.006332', '28.263503'], car1)currentLocation(['108.945456', '34.366566'], car2)//标注当前车辆坐标位置function currentLocation(curPosArr, carArr) {var curPt = new BMap.Point(curPosArr[0], curPosArr[1]) //当前位置var curIcon = new BMap.Icon(working, new BMap.Size(52, 52))var curMarker = new BMap.Marker(curPt, { icon: curIcon })mp.addOverlay(curMarker)var isDraw = false //是否已经绘制过路线curMarker.onclick = function() {drawPath(carArr, isDraw)isDraw = true}}//绘制路线function drawPath(carArr, isDraw) {if (isDraw) {//若绘制过路线  返回 falsereturn false}var pointArr = []var ptNum = 0var driving = new BMap.DrivingRoute(mp) //创建驾车实例// 复杂的自定义覆盖物function ComplexCustomOverlay(point, state, time) {this._point = pointthis.state = statethis.time = time}ComplexCustomOverlay.prototype = new BMap.Overlay()ComplexCustomOverlay.prototype.initialize = function(map) {this._map = mapvar div = (this._div = document.createElement('div'))$(div).addClass('state-wrap')var str = '<div class="logistics-wrap">'str += `<div class="logistics-time">` + this.time + '</div>'str += '<div class="logistics-state">' + this.state + '</div>'str += '</div>'div.innerHTML = strmp.getPanes().labelPane.appendChild(div)var he = div.offsetHeightthis._he = he //当前div的高度return div}ComplexCustomOverlay.prototype.draw = function() {var map = this._mapvar pixel = map.pointToOverlayPixel(this._point)this._div.style.left = pixel.x - 24 + 'px'this._div.style.top = pixel.y - this._he + 5 + 'px'}/*自定义复杂覆盖物结束*/for (var i = 0, len = carArr.length; i < len; i++) {var point = new BMap.Point(carArr[i][0], carArr[i][1])pointArr[i] = pointvar myIcon = new BMap.Icon(circle, new BMap.Size(16, 16))var marker = new BMap.Marker(point, { icon: myIcon }) // 创建标注mp.addOverlay(marker) // 将标注添加到地图中//此处解决在for循环中添加事件总是执行最后一个的情况,传入参数并且立即执行;(function(point, state, time) {var myComOverlay = new ComplexCustomOverlay(point, state, time)mp.addOverlay(myComOverlay)marker.onclick = function() {//给各个点添加点击事件,显示、隐藏自定义复杂物if (myComOverlay.isVisible()) {myComOverlay.hide()} else {myComOverlay.show()}}})(point, carArr[i][3], carArr[i][4])}var len = pointArr.length - 1initRoute(ptNum)function initRoute(num) {driving.search(pointArr[num], pointArr[num + 1])driving.setSearchCompleteCallback(function() {var plan = driving.getResults().getPlan(0)var pts = plan.getRoute(0).getPath()var lineCor = ptNum == len - 1 ? 'red' : '#1aea0a'var lineSty = ptNum == len - 1 ? 'dashed' : 'solid'var polyline = new BMap.Polyline(pts, {strokeColor: lineCor,strokeWeight: 3,strokeOpacity: 0.8,strokeStyle: lineSty})mp.addOverlay(polyline)//查找下两个点ptNum++if (ptNum < len) {initRoute(ptNum)}})}mp.setViewport(pointArr) //自动调整视野}})})},methods: {handleChange(val) {console.log(val)}}
}
</script>
<style lang="less" scoped>
.transportInfo {padding: 0px 16px 16px 16px;// background-color: #ccc;position: relative;.map {width: 100%;height: calc(100vh - 220px);}.collapse {.el-collapse {position: absolute;top: 32px;left: 32px;width: 314px;border-radius: 2px;background: rgba(255, 255, 255, 1);/deep/.el-collapse-item__content {padding-bottom: 0px !important;}/deep/.el-collapse-item__header::before {content: '';width: 4px;height: 16px;background: rgba(12, 111, 255, 1);margin-right: 8px;margin-left: 14px;}/deep/.el-collapse-item__header {font-size: 14px;font-weight: 700;color: rgba(26, 26, 26, 1);.el-collapse-item__arrow.el-icon-arrow-right {color: rgba(25.5, 25.5, 25.5, 1);}}.transportHead {display: flex;margin-left: 14px;.img {margin-right: 8px;}.label {font-size: 14px;font-weight: 400;line-height: 22px;color: rgba(26, 26, 26, 1);}.value {font-size: 14px;font-weight: 400;line-height: 22px;color: rgba(102, 102, 102, 1);}.label1 {border-radius: 2px;background: rgba(242, 247, 255, 1);border: 1px solid rgba(217, 217, 217, 1);font-size: 12px;font-weight: 700;line-height: 22px;color: rgba(26, 26, 26, 1);padding: 2px 4px;margin-right: 6px;}.value1 {border-radius: 2px;background: rgba(255, 141, 26, 0.1);padding: 4px 8px 4px 8px;font-size: 14px;font-weight: 400;color: rgba(255, 141, 26, 1);}}.timeline {margin: 16px;padding: 16px 0 0 0px;display: flex;justify-content: center;align-items: center;border-radius: 2px;width: 282px;background: rgba(242, 247, 255, 1);}}}
}
</style>
<style>
#mapcontainer {width: 100%;height: calc(100vh - 220px);position: relative;
}
.state-wrap {padding-bottom: 16px;position: absolute;left: 0;top: 0;font-size: 12px;line-height: 16px;/* background: url(img/map_label.png) no-repeat left bottom; *//* background: red; */
}
.logistics-wrap {/* background: #fff; *//* padding: 10px; */position: absolute;right: 0px;display: flex;
}
.logistics-state {padding-left: 25px;height: 25px;line-height: 25px;width: 65px;overflow: hidden;text-overflow: ellipsis;white-space: nowrap;border-top-right-radius: 4px;border-bottom-right-radius: 4px;
}
.logistics-time {width: 30px;padding: 4px 8px;padding-left: 25px;border-radius: 2px 0px, 0px, 2px;border-top-left-radius: 4px;border-bottom-left-radius: 4px;
}
/* .logistics-state,
.logistics-time {padding-left: 25px;height: 25px;line-height: 25px;width: 125px;overflow: hidden;text-overflow: ellipsis;white-space: nowrap;
} */
.logistics-state {/* background: url(img/state_icon.png) no-repeat left center; */background: #fff;
}
.logistics-time {/* background: url(img/clock_icon.png) no-repeat left center; */background: rgba(0, 122, 255, 1);box-shadow: 0px 2px 4px 0px rgba(42, 130, 228, 0.15);color: rgba(255, 255, 255, 1);
}
</style>

效果如下:
在这里插入图片描述
参考文章:
https://www.jianshu.com/p/10a5581a8db1?winzoom=1

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

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

相关文章

克隆Linux系统(centos)

克隆前得保证你有一台Linux系统的虚拟机了。 如果没有&#xff0c;可以参考这篇文章&#xff1a; 安装VMware虚拟机、Linux系统&#xff08;CentOS7&#xff09;_何苏三月的博客-CSDN博客 按照示意图一步一步执行即可。 克隆前先关闭运行的虚拟机系统。 然后右键已安装的虚拟…

【图像抠图】【深度学习】Ubuntu18.04下GFM官方代码Pytorch实现

【图像抠图】【深度学习】Ubuntu18.04下GFM官方代码Pytorch实现 提示:最近开始在【图像抠图】方面进行研究,记录相关知识点,分享学习中遇到的问题已经解决的方法。 文章目录 【图像抠图】【深度学习】Ubuntu18.04下GFM官方代码Pytorch实现前言数据集说明1.AM-2k【自然动物】2.B…

Ubuntu更新软件下载更新与移除

目录 一、更新软件源 二、下载与安装软件 三、如何移除软件 四、Ubuntu商店下载软件 一、更新软件源 更新Ubuntu软件源的操作步骤&#xff0c;更新软件源的目的就是&#xff0c;将在Ubuntu官网的软件源更改到本地&#xff0c;也就是国内的软件源&#xff0c;这样的话下载安…

HTML+CSS+JS 学习笔记(三)———Javascript(下)

&#x1f331;博客主页&#xff1a;大寄一场. &#x1f331;系列专栏&#xff1a;前端 &#x1f331;往期回顾&#xff1a;HTMLCSSJS 学习笔记&#xff08;三&#xff09;———Javascript(上) &#x1f618;博客制作不易欢迎各位&#x1f44d;点赞⭐收藏➕关注 目录 JavaScrip…

ES6 新特性的let--const 解构赋值--模板字符串--对象相关新特性--箭头函数--综合代码示例

目录 ES6 新特性 ES6 基本介绍 ES6 是什么? let 声明变量 演示 let 的基本使用 注意事项和使用细节 代码演示 : const 声明常量/只读变量 应用实例 注意事项和使用细节 解构赋值 基本介绍 应用实例-数组解构 应用实例-对象解构 模板字符串 基本介绍 应用实例…

一文带你学会如何写一份糟糕透顶的简历

我们每个人几乎都会面对找工作这件事&#xff0c;而找工作或者说求职首先就是要写一份简历。今天狗哥将以一个不同的视角带你写一份无与伦比&#xff0c;糟糕透顶的求职简历&#xff0c;说实话&#xff0c;其实几年前&#xff0c;我就是这么写的。 目录 1. 文件名 2. 基本信…

OpenAI ChatGPT 能取代多少程序员的工作?导致失业吗?

阅读原文&#xff1a;https://bysocket.com/openai-chatgpt-vs-developer/ ChatGPT 能取代多少程序员的工作&#xff1f;导致我们程序员失业吗&#xff1f;这是一个很好的话题&#xff0c;我这里分享下&#xff1a; 一、ChatGPT 是什么&#xff1f;有什么作用 ChatGPT是一种…

关于 OpenShift(OKD) 网络 Service、Routes的一些笔记

写在前面 参加考试&#xff0c;分享一些学习 OpenShift 的笔记博文内容为 OpenShift 网络相关组件 Service、Routes 很浅的一些认识学习环境为 openshift v3 的版本&#xff0c;有些旧这里如果专门学习 openshift &#xff0c;建议学习 v4 版本理解不足小伙伴帮忙指正 傍晚时分…

开源 AI 辅助编程工具 AutoDev 现已上架 Jetbrains 插件市场

我们非常高兴地宣布 AutoDev v0.2.0 的发布&#xff01;AutoDev 是一款强大的 AI 辅助编程工具&#xff0c;可以与 Jetbrains 系列 IDE 无缝集成&#xff08;VS Code 支持正在开发中&#xff09;。通过与需求管理系统&#xff08;如 Github Issue 等&#xff09;直接对接&#…

Vue收集表单数据学习笔记

收集表单数据 v-model双向数据绑定&#xff0c;收集的是input框的value&#xff0c;单选按钮不存在value&#xff0c;就像代码中的男女选项&#xff0c;即使绑定性别v-model“sex”&#xff0c;控制台依然不能接收性别的值&#xff0c;因为没有value值&#xff0c;&#xff0c…

欧几里得算法、扩展欧几里得算法(特解、应用、通解)

文章目录 1. 欧几里得算法&#xff08;也叫辗转相除法&#xff09;1.1 直接上模拟1.2 几何理解1.3 用代数方法证明 g c d ( a , b ) g c d ( b , a % b ) gcd(a, b) gcd(b, a \% b) gcd(a,b)gcd(b,a%b)1.3.1 左推右&#xff1a; g c d ( a , b ) g c d ( b , a % b ) gcd(a…

Handbook of MusicPsychology 音乐心理学手册 ( 多纳德·霍杰斯 Donald.A.Hodges) 笔记

由两个以上的音组成的结合音&#xff0c;除了该声波的波形&#xff0c;人耳会另外脑补出不存在的波形 频率相距较远的一些音与频率相距较近的一些音&#xff0c;前者累加的响度比后者要大 除了泛音部分&#xff0c;音的起声部分也是音色辨别的关键 音高、响度、音色、时值&a…

LINUX的系统管理与维护命令

文章目录 一、LINUX的系统管理与维护命令总结 一、LINUX的系统管理与维护命令 - Linux ls命令:显示指定工作目录下的内容 Linux pwd命令:显示当前工作目录 Linux cd命令:切换工作目录 Linux date命令:显示或设置系统时间 Linux su命令:切换用户 Linux clear命令:清除屏幕 Li…

Java编程设计语言-集合类

API(application programming interface)是JDK的重要组成部分&#xff0c;API提供了Java程序与运行它的系统软件&#xff08;Java虚拟机&#xff09;之间的接口&#xff0c;可以帮助开发者方便、快捷地开发Java程序 集合在程序设计中是一种重要的是数据结构&#xff0c;Java中提…

Semantic Kernel 知多少 | 开启面向 AI 编程新篇章

在 ChatGPT 火热的当下, 即使没有上手亲自体验&#xff0c;想必也对 ChatGPT 的强大略有耳闻。当一些人在对 ChatGPT 犹犹豫豫之时&#xff0c;一些敏锐的企业主和开发者们已经急不可耐地开展基于 ChatGPT 模型 AI 应用的落地探索。 因此&#xff0c;可以明确预见的是&#xf…

Java+Angular开发的医院信息管理系统源码,系统部署于云端,支持多租户

云HIS系统源码&#xff0c;采用云端SaaS服务的方式提供 基于云计算技术的B/S架构的云HIS系统源码&#xff0c;采用云端SaaS服务的方式提供&#xff0c;使用用户通过浏览器即能访问&#xff0c;无需关注系统的部署、维护、升级等问题&#xff0c;系统充分考虑了模板化、配置化、…

系统分析师之软件工程(十二)

目录 一、 软件开发生命周期 1.1 开发阶段工作细分 二、软件开发模型 2.1 瀑布模型 2.2 原型模型 2.3 增量模型与螺旋模型 2.4 V模型 2.5 喷泉模型 2.6 快速应用开发模型RAD 2.7 构件主装模型 2.8 统一过程 2.9 敏捷方法 三、逆向工程 四、净室软件工程 一、 软件…

斯坦福| ChatGPT用于生成式搜索引擎的可行性

文&#xff5c;智商掉了一地 随着 ChatGPT 在文本生成领域迈出了重要一步&#xff0c;Bing 浏览器也接入了聊天机器人功能&#xff0c;因此如何保证 Bing Chat 等搜索引擎结果的精确率和真实性也成为了搜索领域的热门话题之一。 当我们使用搜索引擎时&#xff0c;往往希望搜索结…

电子阅读器市场角力,AI成为关键变量

配图来自Canva可画 近年来&#xff0c;随着国家“书香型社会”建设政策的出台&#xff0c;公众的阅读需求正在逐年增加&#xff0c;各类读书产品和读书活动&#xff0c;也如同雨后春笋般涌现&#xff0c;人们的阅读体验日益得到丰富。比如&#xff0c;昨天世界读书日举行的“不…

更简单的存取Bean方式-@Bean方法注解

1.Bean方法存储 类注解是添加在某个类上的,那么方法注解是添加在某个方法前的 public class UserBeans {Beanpublic User user1(){User user new User();user.setUid(001);user.setUname("zhangsan");user.setAge(19);user.setPassword("123123");retur…