高德地图的使用
JS API 结合 Vue 使用
高德地图 jsapi 下载、引入
npm add @amap/amap-jsapi-loaderimport AMapLoader from '@amap/amap-jsapi-loader'
使用2.0版本的loader需要在window对象下先配置 securityJsCode JS API 安全密钥使用
JS API 使用 script 标签同步加载增加代理服务器设置脚本,并将「您申请的安全密钥」替换为您的安全密钥;(注意您这个设置必须是在JS API 脚本加载之前进行设置,否则设置无效。)
window._AMapSecurityConfig = {securityJsCode: '「您申请的安全密钥」'
}使用ts时,上面这里会显示类型错误,因此需要在类型文件中配置Window的类型
interface Window {_AMapSecurityConfig: {securityJsCode: string}
}
页面地图初始化加载
自定义地图-设置地图显示样式 自定义地图-地图
AMapLoader.load({key: '', // 申请好的Web端开发者Key,首次调用 load 时必填version: '2.0' // 指定要加载的 JSAPI 的版本,缺省时默认为 1.4.15
}).then((AMap) => {// 地图初始化// Map构造函数第一个传参的map为初始化地图的容器的id,第二个传参是配置对象const map = new AMap.Map('map', {viewMode:"3D", //是否为3D地图模式mapStyle: 'amap://styles/whitesmoke', //设置地图的显示样式zoom: 12 //设置地图的缩放级别}) }).catch((e) => {console.error(e) //加载错误提示})
根据后台返回的经纬度数组,自定义绘制行车路径,参考官方文档 - 路线规划
使用插件 AMap.Driving-根据起点和终点规划自动行车路径
AMapLoader.load({key: '', // 申请好的Web端开发者Key,首次调用 load 时必填version: '2.0' // 指定要加载的 JSAPI 的版本,缺省时默认为 1.4.15
}).then((AMap) => {// 地图初始化const map = new AMap.Map('map', {// viewMode:"3D", //是否为3D地图模式mapStyle: 'amap://styles/whitesmoke', //设置地图的显示样式zoom: 12 //设置地图的缩放级别})// 使用插件 AMap.DrivingAMap.plugin('AMap.Driving', function () {const driving = new AMap.Driving({map: map, // 配置参数map,意思是在那个地图中绘制行车路径showTraffic: false, // 关闭道路情况(设置是否显示实时路况信息)hideMarkers: true // 关闭沿途标记(设置隐藏路径规划的起始点图标 )})// logisticsInfo是后端返回的行车路径的数组if (logistics.value?.logisticsInfo && logistics.value.logisticsInfo.length >= 2) {const list = [...logistics.value.logisticsInfo]// 起点 startconst start = list.shift()// 终点 endconst end = list.pop()// 传入起点和终点的经纬度信息,获取对应的驾车路线规划driving.search([start?.longitude, start?.latitude],[end?.longitude, end?.latitude],function () {// 未出错时,result即是对应的路线规划方案// 在这里绘制沿途运输位置})}})}).catch((e) => {console.error(e) // 加载错误提示})
使用插件 AMap.Driving-自定义绘制路径,也就是把路途的途径点告知地图让其渲染路径
参考官方文档 途经点参数 路线规划-途经点
// 途经点 opts 是一个对象,属性waypoints就是绘制途经点参数
const opts = {// 途经点参数,最多支持传入16个途经点waypoints: list.map((item) => [item.longitude, item.latitude])
}
driving.search([start?.longitude, start?.latitude],[end?.longitude, end?.latitude],opts,function () {}
)
实现业务:关闭途径标记( hideMarkers: true)并且实现自定义绘制起点-终点-和当前运输位置 ,其实就是绘制一个标记,参考官方实例 自定义图标-点标记
让当前的运输位置显示在地图的正中间并且设置缩放比例,参考官方文档 setFitView-setZoom方法
参考手册-地图 JS API
// 创建一个标记点函数
const getMarker = (point: Location, image: string, width = 25, height = 30) => {// 创建一个 Icon,这种方式可以设置图标的大小const Icon = new AMap.Icon({// 图标尺寸size: new AMap.Size(width, height),// 图标的取图地址image: image,// 图标所用图片大小imageSize: new AMap.Size(width, height)})// 将 icon 传入 markerconst marker = new AMap.Marker({position: [point?.longitude, point?.latitude],// 将一张图片的地址设置为 iconicon: Icon,// 设置了 icon 以后,设置 icon 的偏移量,以 icon 的 [center bottom] 为原点offset: new AMap.Pixel(-width / 2, -height)})return marker
}
const startMarker = getMarker(start!, startImg) // 起点icon标记
const endMarker = getMarker(end!, endImg) // 终点icon标记// 往地图上增加标记
map.add([startMarker, endMarker])driving.search(function () {// 绘制当前运输位置,后端返回 currentLocationInfo 就是当前的运输位置 标记const curr = logistics.value?.currentLocationInfo // 当前的运输位置经纬度const currMarker = getMarker(curr!, carImg, 33, 20) // 当前运输位置标记map.add([currMarker]) // 往地图上增加当前运输位置标记// 2s后定位当中间进行缩放setTimeout(() => {map.setFitView([currMarker]) // 定位到当前运输的位置map.setZoom(10) // 一定比例的缩放}, 2000)}
)
下面贴出完整绘制物流信息地图的代码
import startImg from '@/assets/start.png'
import endImg from '@/assets/end.png'
import carImg from '@/assets/car.png'const initMap = () => {AMapLoader.load({key: '', // 申请好的Web端开发者Key,首次调用 load 时必填version: '2.0' // 指定要加载的 JSAPI 的版本,缺省时默认为 1.4.15}).then((AMap) => {// 地图初始化const map = new AMap.Map('map', {// viewMode:"3D", //是否为3D地图模式mapStyle: 'amap://styles/whitesmoke', //设置地图的显示样式zoom: 12 //设置地图的缩放级别})AMap.plugin('AMap.Driving', function () {const driving = new AMap.Driving({map: map,// panel: 'panel'showTraffic: false,hideMarkers: true})if (logistics.value?.logisticsInfo && logistics.value.logisticsInfo.length >= 2) {const list = [...logistics.value.logisticsInfo]// 创建标记函数const getMarker = (point: Location, image: string, width = 25, height = 30) => {// 创建一个 Icon,这种方式可以设置图标的大小const Icon = new AMap.Icon({// 图标尺寸size: new AMap.Size(width, height),// 图标的取图地址image: image,// 图标所用图片大小imageSize: new AMap.Size(width, height)})// 将 icon 传入 markerconst marker = new AMap.Marker({position: [point?.longitude, point?.latitude],// 将一张图片的地址设置为 iconicon: Icon,// 设置了 icon 以后,设置 icon 的偏移量,以 icon 的 [center bottom] 为原点offset: new AMap.Pixel(-width / 2, -height)})return marker}// 起点 startconst start = list.shift()const startMarker = getMarker(start!, startImg)// 终点 endconst end = list.pop()const endMarker = getMarker(end!, endImg)map.add([startMarker, endMarker])// 途经点 optsconst opts = {// 途经点参数,最多支持传入16个途经点waypoints: list.map((item) => [item.longitude, item.latitude])}driving.search([start?.longitude, start?.latitude],[end?.longitude, end?.latitude],opts,function () {// 未出错时,result即是对应的路线规划方案// 绘制运输位置const curr = logistics.value?.currentLocationInfoconst currMarker = getMarker(curr!, carImg, 33, 20)map.add([currMarker])// 2s后定位当中间进行缩放setTimeout(() => {map.setFitView([currMarker])map.setZoom(10)}, 2000)})}})}).catch((e) => {console.error(e) //加载错误提示})
}
相关文章:

高德地图的使用
JS API 结合 Vue 使用 高德地图 jsapi 下载、引入 npm add amap/amap-jsapi-loaderimport AMapLoader from amap/amap-jsapi-loader 使用2.0版本的loader需要在window对象下先配置 securityJsCode JS API 安全密钥使用 JS API 使用 script 标签同步加载增加代理服务器设置…...
<List<Map<String,String>>> 删除元素常见的误区以及删除方法
看到这么标题可能觉得这个真是太easy了,不就remove吗,分分钟搞定。 但结果却出乎意料,下面我们来j简单说说list删除数据可能遇到的坑: 先说明我们可能会遇到的两个问题: 1.java.lang.IndexOutOfBoundsException(索引越…...
Linux下的编辑器——vim的简单上手指南
文章目录 一.概念1. 什么是 vim2. Vim 的模式①命令模式② 插入模式③底线命令模式 二.vim的基本操作1.如何启动vim?2. [命令模式」切换至 「插入模式」3.「插入模式」 切换至 「命令模式」4.「命令模式」切换至 「底行模式」5. 如何退出 vim? 三.vim指令…...
C++多线程学习(二、多线程的几种创造方式【有返回值的之后讲】)
目录 创建多线程 1.普通函数充当线程处理函数创造线程 2.Lambda表达式充当线程处理函数 3.带参函数创建线程 3.1普通参数 3.2传入引用 3.3智能指针充当函数参数 4.通过类中的成员函数创建 4.1仿函数方式创建:类名的方式调用 4.2普通类中的成员函数 创建多…...
前端开发框架生命周期详解:Vue、React和Angular
引言 作为前端开发者,掌握前端开发框架的生命周期是非常重要的。在现代Web应用开发中,Vue.js、React和Angular是三个最流行的前端开发框架。本篇博客将详细解读这三个框架的生命周期,包括每个阶段的含义、用途以及如何最大限度地利用它们。通…...

【Java从入门到大牛】程序流程控制
🔥 本文由 程序喵正在路上 原创,CSDN首发! 💖 系列专栏:Java从入门到大牛 🌠 首发时间:2023年7月7日 🦋 欢迎关注🖱点赞👍收藏🌟留言🐾…...
UML学习统一建模语言
unified modeling language 统一建模语言 面向对象软件分析与设计建模的事实标准 类命名:帕斯卡特命名 类之间的关系 关联关系:班级和学生,一个类的对象作为另一个类的成员变量; 通过非构造和setter注入的方式建立联系…...

【C++学习笔记】RAII思想——智能指针
智能指针 1 内存泄漏问题2 RAII(Resource Acquisition Is Initialization)2.1 使用RAII思想设计的SmartPtr类2.2 智能指针的原理2.3 小总结智能指针原理 3 智能指针的拷贝问题3.1 std::auto_ptr3.2 std::unique_ptr3.3 std::shared_ptr3.3.1 拷贝构造函数…...
ubantu配置python环境
安装python 参考博客 安装pycharm 博客 创建Pycharm快捷方式 博客 ImportError: urllib3 v2.0 only supports OpenSSL 1.1.1, currently the ‘ssl’ module is compiled with File “/home/r00t/IdeaProjects/data/venv/lib/python3.9/site-packages/urllib3/init.py”…...

单向/双向V2G环境下分布式电源与电动汽车充电站联合配置方法(matlab代码)
目录 1 主要内容 目标函数 电动汽车负荷建模 算例系统图 程序亮点 2 部分代码 3 程序结果 4 下载链接 1 主要内容 该程序复现博士文章《互动环境下分布式电源与电动汽车充电站的优化配置方法研究》第五章《单向/双向V2G环境下分布式电源与电动汽车充电站联合配置方法》…...

dockerfile常用指令
Dockerfile常用指令 视频学习资料来源这里,点击本行文字即可跳转,讲的比较详细,不过比较老,跟最新的肯定是有一些差异的 Dockerfile官网文档的话点击这里 中文文档可以看看这个,不过没有详细的代码demo 或者是看这个 或…...
Matlab/simulink与dsp28335联合开发教程
一.入门篇(开发环境搭建) 1.1 Code Composer Studio 软件安装1.2 MATLAB 软件安装1.3 Control_SUIT3.4 软件安装1.4 C2000 Simulink 开发工具箱安装1.5 Visual_Studio_Professional 二. 基础篇(片内外设使用) 2.1 G…...

新项目搞完啦!!!
大家好,我是鱼皮。 经过了 7 场直播,总时长近 20 小时,我在 自己的编程导航 的第 5 个 全程直播开发 的项目 —— 智能 BI 项目,完结啦! 我在这里对该项目做一个简单的总结,希望让更多需要它的同学看到&am…...
分享一个可交互的小场景(二)
先看效果: 可互动的小场景 再看代码: JS部分 <script>var rotateDiv document.getElementById(rot);var rotateIcons document.getElementById(rot-icons);var clickRotateDiv document.getElementById(click-rot);var angle 0;clickRotateDi…...

2.5 DNS 应用 -- 1. DNS 概述
2.5 DNS 应用 -- 1. DNS 概述 DNS:Domain Name SystemDNS分布式层次式数据库DNS根域名服务器TLD和权威域名解析服务器本地域名解析服务器 DNS 查询迭代查询递归查询 DNS记录缓存和更新 DNS:Domain Name System Internet上主机/路由器的识别问题 IP地址域…...

基于STM32麦克风阵列音频信号处理系统设计
v hezkz17进数字音频系统研究开发交流答疑 附录: ADAU1452音频处理系统...
《重构》:Extract Class and Inline Class
hey,gays lets go on to refator those sh!t . i fork a rep, this the link GitHub - TIMPICKLE/refator-code: 重构 - 改善既有代码的设计 all right, lets see the genel description. 提取类 对立:内联类 目的:将大类分成小类 场景&a…...

腾讯云对象存储联合DataBend云数仓打通数据湖和数据仓库
随着数字化进程不断深入,数据呈大规模、多样性的爆发式增长。为满足更多样、更复杂的业务数据处理分析的诉求,湖仓一体应运而生。在Gartner发布的《Hype Cycle for Data Management 2021》中,湖仓一体(Lake house)首次…...
ExceptionLess windows部署。
前言 windows部署 1、一个api项目,里面包含了所有api。 2、一个elasticsearch项目,用来存储相关数据。 3、一个UI项目,也就是查看异常、设置新异常邮件通知等操作的后台。 异常在客户端提交的代码原理:一个异常被提交,…...
使用python实现1DCNN-GRU回归预测
要实现1DCNN-GRU进行回归预测,您可以使用以下Python代码作为参考: 首先,导入所需的库: import numpy as np import tensorflow as tf from tensorflow.keras.layers import Conv1D, MaxPooling1D, GlobalAveragePooling1D, GRU,…...

观成科技:隐蔽隧道工具Ligolo-ng加密流量分析
1.工具介绍 Ligolo-ng是一款由go编写的高效隧道工具,该工具基于TUN接口实现其功能,利用反向TCP/TLS连接建立一条隐蔽的通信信道,支持使用Let’s Encrypt自动生成证书。Ligolo-ng的通信隐蔽性体现在其支持多种连接方式,适应复杂网…...

【Python】 -- 趣味代码 - 小恐龙游戏
文章目录 文章目录 00 小恐龙游戏程序设计框架代码结构和功能游戏流程总结01 小恐龙游戏程序设计02 百度网盘地址00 小恐龙游戏程序设计框架 这段代码是一个基于 Pygame 的简易跑酷游戏的完整实现,玩家控制一个角色(龙)躲避障碍物(仙人掌和乌鸦)。以下是代码的详细介绍:…...

Linux 文件类型,目录与路径,文件与目录管理
文件类型 后面的字符表示文件类型标志 普通文件:-(纯文本文件,二进制文件,数据格式文件) 如文本文件、图片、程序文件等。 目录文件:d(directory) 用来存放其他文件或子目录。 设备…...

Spark 之 入门讲解详细版(1)
1、简介 1.1 Spark简介 Spark是加州大学伯克利分校AMP实验室(Algorithms, Machines, and People Lab)开发通用内存并行计算框架。Spark在2013年6月进入Apache成为孵化项目,8个月后成为Apache顶级项目,速度之快足见过人之处&…...

智能在线客服平台:数字化时代企业连接用户的 AI 中枢
随着互联网技术的飞速发展,消费者期望能够随时随地与企业进行交流。在线客服平台作为连接企业与客户的重要桥梁,不仅优化了客户体验,还提升了企业的服务效率和市场竞争力。本文将探讨在线客服平台的重要性、技术进展、实际应用,并…...

Python实现prophet 理论及参数优化
文章目录 Prophet理论及模型参数介绍Python代码完整实现prophet 添加外部数据进行模型优化 之前初步学习prophet的时候,写过一篇简单实现,后期随着对该模型的深入研究,本次记录涉及到prophet 的公式以及参数调优,从公式可以更直观…...
Qt Http Server模块功能及架构
Qt Http Server 是 Qt 6.0 中引入的一个新模块,它提供了一个轻量级的 HTTP 服务器实现,主要用于构建基于 HTTP 的应用程序和服务。 功能介绍: 主要功能 HTTP服务器功能: 支持 HTTP/1.1 协议 简单的请求/响应处理模型 支持 GET…...
vue3 定时器-定义全局方法 vue+ts
1.创建ts文件 路径:src/utils/timer.ts 完整代码: import { onUnmounted } from vuetype TimerCallback (...args: any[]) > voidexport function useGlobalTimer() {const timers: Map<number, NodeJS.Timeout> new Map()// 创建定时器con…...
实现弹窗随键盘上移居中
实现弹窗随键盘上移的核心思路 在Android中,可以通过监听键盘的显示和隐藏事件,动态调整弹窗的位置。关键点在于获取键盘高度,并计算剩余屏幕空间以重新定位弹窗。 // 在Activity或Fragment中设置键盘监听 val rootView findViewById<V…...

全志A40i android7.1 调试信息打印串口由uart0改为uart3
一,概述 1. 目的 将调试信息打印串口由uart0改为uart3。 2. 版本信息 Uboot版本:2014.07; Kernel版本:Linux-3.10; 二,Uboot 1. sys_config.fex改动 使能uart3(TX:PH00 RX:PH01),并让boo…...