当前位置: 首页 > news >正文

高德地图的使用

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日 🦋 欢迎关注🖱点赞👍收藏🌟留言&#x1f43e…...

UML学习统一建模语言

unified modeling language 统一建模语言 面向对象软件分析与设计建模的事实标准 类命名:帕斯卡特命名 类之间的关系 关联关系:班级和学生,一个类的对象作为另一个类的成员变量; 通过非构造和setter注入的方式建立联系&#xf…...

【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…...

分享一个可交互的小场景(二)

先看效果&#xff1a; 可互动的小场景 再看代码&#xff1a; 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&#xff1a;Domain Name SystemDNS分布式层次式数据库DNS根域名服务器TLD和权威域名解析服务器本地域名解析服务器 DNS 查询迭代查询递归查询 DNS记录缓存和更新 DNS&#xff1a;Domain Name System Internet上主机/路由器的识别问题 IP地址域…...

基于STM32麦克风阵列音频信号处理系统设计

v hezkz17进数字音频系统研究开发交流答疑 附录: ADAU1452音频处理系统...

《重构》:Extract Class and Inline Class

hey&#xff0c;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. 提取类 对立&#xff1a;内联类 目的&#xff1a;将大类分成小类 场景&a…...

腾讯云对象存储联合DataBend云数仓打通数据湖和数据仓库

随着数字化进程不断深入&#xff0c;数据呈大规模、多样性的爆发式增长。为满足更多样、更复杂的业务数据处理分析的诉求&#xff0c;湖仓一体应运而生。在Gartner发布的《Hype Cycle for Data Management 2021》中&#xff0c;湖仓一体&#xff08;Lake house&#xff09;首次…...

ExceptionLess windows部署。

前言 windows部署 1、一个api项目&#xff0c;里面包含了所有api。 2、一个elasticsearch项目&#xff0c;用来存储相关数据。 3、一个UI项目&#xff0c;也就是查看异常、设置新异常邮件通知等操作的后台。 异常在客户端提交的代码原理&#xff1a;一个异常被提交&#xff0c;…...

使用python实现1DCNN-GRU回归预测

要实现1DCNN-GRU进行回归预测&#xff0c;您可以使用以下Python代码作为参考&#xff1a; 首先&#xff0c;导入所需的库&#xff1a; import numpy as np import tensorflow as tf from tensorflow.keras.layers import Conv1D, MaxPooling1D, GlobalAveragePooling1D, GRU,…...

后进先出(LIFO)详解

LIFO 是 Last In, First Out 的缩写&#xff0c;中文译为后进先出。这是一种数据结构的工作原则&#xff0c;类似于一摞盘子或一叠书本&#xff1a; 最后放进去的元素最先出来 -想象往筒状容器里放盘子&#xff1a; &#xff08;1&#xff09;你放进的最后一个盘子&#xff08…...

Vim 调用外部命令学习笔记

Vim 外部命令集成完全指南 文章目录 Vim 外部命令集成完全指南核心概念理解命令语法解析语法对比 常用外部命令详解文本排序与去重文本筛选与搜索高级 grep 搜索技巧文本替换与编辑字符处理高级文本处理编程语言处理其他实用命令 范围操作示例指定行范围处理复合命令示例 实用技…...

XML Group端口详解

在XML数据映射过程中&#xff0c;经常需要对数据进行分组聚合操作。例如&#xff0c;当处理包含多个物料明细的XML文件时&#xff0c;可能需要将相同物料号的明细归为一组&#xff0c;或对相同物料号的数量进行求和计算。传统实现方式通常需要编写脚本代码&#xff0c;增加了开…...

JavaScript 中的 ES|QL:利用 Apache Arrow 工具

作者&#xff1a;来自 Elastic Jeffrey Rengifo 学习如何将 ES|QL 与 JavaScript 的 Apache Arrow 客户端工具一起使用。 想获得 Elastic 认证吗&#xff1f;了解下一期 Elasticsearch Engineer 培训的时间吧&#xff01; Elasticsearch 拥有众多新功能&#xff0c;助你为自己…...

大模型多显卡多服务器并行计算方法与实践指南

一、分布式训练概述 大规模语言模型的训练通常需要分布式计算技术,以解决单机资源不足的问题。分布式训练主要分为两种模式: 数据并行:将数据分片到不同设备,每个设备拥有完整的模型副本 模型并行:将模型分割到不同设备,每个设备处理部分模型计算 现代大模型训练通常结合…...

涂鸦T5AI手搓语音、emoji、otto机器人从入门到实战

“&#x1f916;手搓TuyaAI语音指令 &#x1f60d;秒变表情包大师&#xff0c;让萌系Otto机器人&#x1f525;玩出智能新花样&#xff01;开整&#xff01;” &#x1f916; Otto机器人 → 直接点明主体 手搓TuyaAI语音 → 强调 自主编程/自定义 语音控制&#xff08;TuyaAI…...

MySQL账号权限管理指南:安全创建账户与精细授权技巧

在MySQL数据库管理中&#xff0c;合理创建用户账号并分配精确权限是保障数据安全的核心环节。直接使用root账号进行所有操作不仅危险且难以审计操作行为。今天我们来全面解析MySQL账号创建与权限分配的专业方法。 一、为何需要创建独立账号&#xff1f; 最小权限原则&#xf…...

Hive 存储格式深度解析:从 TextFile 到 ORC,如何选对数据存储方案?

在大数据处理领域&#xff0c;Hive 作为 Hadoop 生态中重要的数据仓库工具&#xff0c;其存储格式的选择直接影响数据存储成本、查询效率和计算资源消耗。面对 TextFile、SequenceFile、Parquet、RCFile、ORC 等多种存储格式&#xff0c;很多开发者常常陷入选择困境。本文将从底…...

在Ubuntu24上采用Wine打开SourceInsight

1. 安装wine sudo apt install wine 2. 安装32位库支持,SourceInsight是32位程序 sudo dpkg --add-architecture i386 sudo apt update sudo apt install wine32:i386 3. 验证安装 wine --version 4. 安装必要的字体和库(解决显示问题) sudo apt install fonts-wqy…...

[大语言模型]在个人电脑上部署ollama 并进行管理,最后配置AI程序开发助手.

ollama官网: 下载 https://ollama.com/ 安装 查看可以使用的模型 https://ollama.com/search 例如 https://ollama.com/library/deepseek-r1/tags # deepseek-r1:7bollama pull deepseek-r1:7b改token数量为409622 16384 ollama命令说明 ollama serve #&#xff1a…...