Vue3+Element-plus+setup使用vuemap/vue-amap实现高德地图API相关操作

news2024/9/24 1:24:10

首先要下载依赖并且引入

npm安装

// 安装核心库
npm install @vuemap/vue-amap --save

// 安装loca库
npm install @vuemap/vue-amap-loca --save

// 安装扩展库
npm install @vuemap/vue-amap-extra --save

cdn

<script src="https://cdn.jsdelivr.net/npm/@vuemap/vue-amap/dist/index.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/@vuemap/vue-amap/dist/style.css"></script>
<script src="https://cdn.jsdelivr.net/npm/@vuemap/vue-amap-loca/dist/index.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/@vuemap/vue-amap-extra/dist/index.min.js"></script>

任选其一安装后引入依赖,记得换成自己注册的高德地图安全密钥和key

 npm

import App from './App.vue'
import VueAMap, {initAMapApiLoader} from '@vuemap/vue-amap';
// import VueAMapLoca from '@vuemap/vue-amap-loca';
// import VueAMapExtra from '@vuemap/vue-amap-extra';
import '@vuemap/vue-amap/dist/style.css'
initAMapApiLoader({
  key: 'YOUR_KEY',
  securityJsCode: 'securityJsCode', // 新版key需要配合安全密钥使用
  //Loca:{
  //  version: '2.0.0'
  //} // 如果需要使用loca组件库,需要加载Loca
})

createApp(App)
    .use(VueAMap)
  //.use(VueAMapLoca)
  //.use(VueAMapExtra)
    .mount('#app')

cdn

window.VueAMap.initAMapApiLoader({
  key: 'YOUR_KEY',
});

老规矩,先上效果图

 

 

每个marker标记点对应图标和数据状态不同

代码

<el-amap
      :vid="'amap-demo'"
      :zoom="zoom"
      :center="center"
      style="width: 100%; height: 100%; position: relative"
    >
      <el-amap-marker
        v-for="(marker, index) in markers"
        :key="marker.id"
        :position="[marker.lng, marker.lat]"
        :icon="marker.icon"
        @mouseover="showInfoWindow(index)"
        @mouseout="hideInfoWindow"
      ></el-amap-marker>

      <el-amap-info-window
        v-if="currentInfoWindowIndex !== null"
        :position="[
          markers[currentInfoWindowIndex].lng,
          markers[currentInfoWindowIndex].lat,
        ]"
        :visible="infoWindowVisible"
        :offset="[0, -30]"
      >
        <template #default>
          <div>
            <strong>事故名称:</strong>
            {{ markers[currentInfoWindowIndex].accidentName }}<br />
            <strong>事故类型:</strong>
            {{
              markers[currentInfoWindowIndex].accidentType == "HSP"
                ? "热源厂"
                : markers[currentInfoWindowIndex].accidentType == "HPPL"
                ? "热电厂"
                : markers[currentInfoWindowIndex].accidentType == "IWHT"
                ? "工业余热"
                : markers[currentInfoWindowIndex].accidentType == "CE"
                ? "清洁能源"
                : markers[currentInfoWindowIndex].accidentType == "PHNW"
                ? "供热一级网"
                : markers[currentInfoWindowIndex].accidentType == "SHNW"
                ? "供热二级网"
                : markers[currentInfoWindowIndex].accidentType == "CHNW"
                ? "庭院供热官网"
                : markers[currentInfoWindowIndex].accidentType == "HES"
                ? "换热站"
                : "单元立杠及入户管"
            }}
          </div>
          <el-steps
            style="width: 200px; height: 300px"
            direction="vertical"
            :active="
              markers[currentInfoWindowIndex].accidentStatus == 'IR'
                ? 1
                : markers[currentInfoWindowIndex].accidentStatus == 'CR'
                ? 2
                : markers[currentInfoWindowIndex].accidentStatus == 'MA'
                ? 3
                : 4
            "
          >
            <el-step
              :title="'事故上报 '"
              :description="markers[currentInfoWindowIndex].accidentDesc"
            />
            <el-step
              :title="'确认原因 '"
              :description="markers[currentInfoWindowIndex].reasonDesc"
            />
            <el-step
              :title="'物资到场 '"
              :description="markers[currentInfoWindowIndex].situationDesc"
            />
            <el-step
              :title="'抢修完成 '"
              :description="
                markers[currentInfoWindowIndex].summaryReportContent
              "
            />
          </el-steps>
        </template>
      </el-amap-info-window>
      <div
        style="
          position: absolute;
          right: 0;
          bottom: 0;
          width: 120px;
          height: 130px;
          background-color: #fff;
        "
      >
        <div style="height: 30px; line-height: 30px; text-align: center">
          <img
            style="width: 20px; height: 20px; vertical-align: middle"
            src="../../../public/sgsb.png"
          />
          事故上报
        </div>
        <div style="height: 30px; line-height: 30px; text-align: center">
          <img
            style="width: 20px; height: 20px; vertical-align: middle"
            src="../../../public/qryy.png"
          />
          确认原因
        </div>
        <div style="height: 30px; line-height: 30px; text-align: center">
          <img
            style="width: 20px; height: 20px; vertical-align: middle"
            src="../../../public/wzdc.png"
          />
          物资到场
        </div>
        <div style="height: 30px; line-height: 30px; text-align: center">
          <img
            style="width: 20px; height: 20px; vertical-align: middle"
            src="../../../public/qxwc.png"
          />
          抢修完成
        </div>
      </div>
    </el-amap>

下面是接口返回的数据格式 

{
    "errorcode": 0,
    "message": "success",
    "data": [
        {
            "id": 574926636965957,
            "orgId": "35194607",
            "accidentName": "第一个事故",
            "accidentType": "CE",
            "accidentStatus": "IR",
            "address": "辽宁省抚顺市抚顺县石文镇肖庆江采摘园",
            "areaId": "210000-210400-210421",
            "areaInfo": "辽宁省-抚顺市-抚顺县",
            "cityCode": "210421",
            "lng": 123.932566,
            "lat": 41.664697,
            "findTime": 1722499341000,
            "accidentDesc": "第一个事故描述",
            "reasonDesc": null,
            "situationDesc": null,
            "summaryReportContent": null
        },
        {
            "id": 574927337517125,
            "orgId": "35194607",
            "accidentName": "2",
            "accidentType": "HPPL",
            "accidentStatus": "CR",
            "address": "黑龙江省鹤岗市向阳区南翼街道地矿街",
            "areaId": "230000-230400-230402",
            "areaInfo": "黑龙江省-鹤岗市-向阳区",
            "cityCode": "230402",
            "lng": 130.306295,
            "lat": 47.338636,
            "findTime": 1722499511000,
            "accidentDesc": "2",
            "reasonDesc": "第二个原因描述",
            "situationDesc": null,
            "summaryReportContent": null
        },
        {
            "id": 574927455924293,
            "orgId": "35194607",
            "accidentName": "3",
            "accidentType": "IWHT",
            "accidentStatus": "ERC",
            "address": "北京市东城区龙潭街道必胜客(新光明楼店)北京天坛东门站希尔顿花园酒店",
            "areaId": "110000-110100-110101",
            "areaInfo": "北京市-市辖区-东城区",
            "cityCode": "110101",
            "lng": 116.433858,
            "lat": 39.883466,
            "findTime": 1722499542000,
            "accidentDesc": "3",
            "reasonDesc": "33",
            "situationDesc": "第三个情况描述",
            "summaryReportContent": "22"
        },
        {
            "id": 575179564855365,
            "orgId": "35194607",
            "accidentName": "4",
            "accidentType": "CE",
            "accidentStatus": "ERC",
            "address": "内蒙古自治区锡林郭勒盟西乌珠穆沁旗巴彦花镇",
            "areaId": "150000-152500-152526",
            "areaInfo": "内蒙古自治区-锡林郭勒盟-西乌珠穆沁旗",
            "cityCode": "152526",
            "lng": 118.659128,
            "lat": 44.532406,
            "findTime": 1722561086000,
            "accidentDesc": "4",
            "reasonDesc": "4",
            "situationDesc": "4",
            "summaryReportContent": "第三个总结汇报"
        },
        {
            "id": 577020505301061,
            "orgId": "35194607",
            "accidentName": "测试",
            "accidentType": "HPPL",
            "accidentStatus": "IR",
            "address": "辽宁省沈阳市新民市前当堡镇码头路",
            "areaId": "210000-210100-210181",
            "areaInfo": "辽宁省-沈阳市-新民市",
            "cityCode": "210181",
            "lng": 122.907173,
            "lat": 41.756281,
            "findTime": 1723010535000,
            "accidentDesc": "测试描述",
            "reasonDesc": null,
            "situationDesc": null,
            "summaryReportContent": null
        }
    ]
}
const data: any = ref([]);
// 地图配置
const zoom = ref(5);
const center = ref([116.397428, 39.90923]); // 初始中心坐标(北京)
const infoWindowVisible = ref(false);
const currentInfoWindowIndex: any = ref(null);
const get_report_list = () => {
  appAxios
    .get(
      `/emergency-repair-report/map?orgId=${orgId}&startTime=${startTime.value}&endTime=${endTime.value}`
    )
    .then((res: any) => {
      if (res.data.errorcode == 0) {
        data.value = res.data.data;
      }
    });
};
// 显示信息窗体
function showInfoWindow(index: any) {
  currentInfoWindowIndex.value = index;
  infoWindowVisible.value = true;
}

// 隐藏信息窗体
function hideInfoWindow() {
  infoWindowVisible.value = false;
}
const markers: any = ref([]);
watch(
  data,
  (newData) => {
    markers.value = newData.map((item: any) => ({
      ...item,
      icon:
        item.accidentStatus == "IR"
          ? "../../../public/sgsb.png"
          : item.accidentStatus == "CR"
          ? "../../../public/qryy.png"
          : item.accidentStatus == "MA"
          ? "../../../public/wzdc.png"
          : "../../../public/qxwc.png",
    }));
  },
  { immediate: true }
);

数据中的lng和lat对应markers定位点的经纬度来确定位置,其他的数据可以在窗体信息组件中进行自定义设置遍历渲染,其他具体相关配置项可以自行到官网查看地址如下简介 | @vuemap/vue-amap (guyixi.cn) 

注意这里涉及到map遍历的时候接口还没返回数据的异步问题,可以用watch,settimeout及其他方法解决相关问题。第二点是markers数组中的icon配置可以换成自己本地或者是http的url图片再或者其他的图标,按照需求来设置,不设置默认是蓝色水滴样式。

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

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

相关文章

linux反向代理原理:帮助用户更好地优化网络架构

Linux反向代理原理详解 反向代理是一种在网络架构中常用的技术&#xff0c;尤其在Linux环境下被广泛应用。它可以帮助实现负载均衡、安全防护和请求缓存等功能。本文将深入探讨Linux反向代理的原理、工作机制以及其应用场景。 1. 什么是反向代理 反向代理是指代理服务器接收客…

HarmonyOS Developer之图片帧动画播放器

创建image-animator组件 在pages/index目录下的hml文件中创建一个image-animator组件&#xff0c;css文件中编写组件样式&#xff0c;js文件中引用图片。 设置image-animator组件属性 添加iteration&#xff08;播放次数&#xff09;、reverse&#xff08;播放顺序&#xf…

SSM宠物商城-计算机毕业设计源码23666

摘 要 近年来&#xff0c;社会的发展和进步以及人们生活水平的提高&#xff0c;人们饲养宠物的习惯也越来越重视。很多家庭都把宠物视为家庭的重要成员。宠物不仅能给自己作伴&#xff0c;而且在生活中能充当自己精神的支柱&#xff0c;缓解压力、放松心态的伙伴。宠物不同于一…

Koa商城项目-轮播图模块(前端)

前言 通过这次独自做前后端发现有很多需要提升的地方&#xff0c;很多细节处理不到位。下面简单看一下本人自己做的效果吧~~ Git地址 https://gitee.com/ah-ah-bao/koa_system 效果图 前端代码 api/banner.ts import request from "../utils/request";export con…

Mapreduce_wordcount自定义单词计数

自定义的wordcount 数据处理过程 加载jar包 查看后面的pom文件 以上为需要的jar包路径&#xff0c;将其导入至idea中 Map package com.hadoop;import org.apache.hadoop.io.IntWritable; import org.apache.hadoop.io.LongWritable; import org.apache.hadoop.io.Text; im…

计算机毕业设计选题推荐-宠物管理系统-Java/Python项目实战

✨作者主页&#xff1a;IT研究室✨ 个人简介&#xff1a;曾从事计算机专业培训教学&#xff0c;擅长Java、Python、微信小程序、Golang、安卓Android等项目实战。接项目定制开发、代码讲解、答辩教学、文档编写、降重等。 ☑文末获取源码☑ 精彩专栏推荐⬇⬇⬇ Java项目 Python…

【彻底关闭win10 or 11系统自动更新】

直接上干货 win10或者win11自动更新后系统有bug&#xff0c;太闹心了&#xff0c;是时候选择一个稳定版本彻底关闭更新了 第一步&#xff1a; 在win11左下方搜索框输入&#xff1a;powershell&#xff0c; 选择「Windows PowerShell (管理员)」 第二步&#xff1a; 在 Wind…

FreeSWITCH

1概述 FreeSWITCH https://signalwire.com/freeswitch是一个开源的电话交换平台。官方给它的定义是–世界上第一个跨平台的、伸缩性极好的、免费的、多协议的电话软交换平台。由这个定义我们可以得出以下几点: FreeSWITCH是跨平台的。它能原生地运行于Windows、MaxOSX、Linux、…

智启万象 | Web 开发智能升级、简单易用

AI 的融入使 Web 的功能更加强大 同时也更加简单易用 一起回顾 2024 Google 开发者大会 了解 Web 开发 UI 功能和 OS 集成的最新创新 以及如何通过这些创新来打造卓越的应用体验 Web 不断的革新与发展&#xff0c;不仅为全球数十亿用户提供了丰富多样的在线体验&#xff0c;也为…

HCIP | 重发布实验

要求&#xff1a; 1.如图搭建网络拓扑&#xff0c;所有路由器各自创建一个环回接口&#xff0c;合理规划IP地址 2.R1-R2-R3-R4-R6之间使用OSPF协议&#xff0c;R4-R5-R6之间使用RIP协议 3.R1环回重发布方式引入OSPF网络 4.R4/R6上进行双点双向重发布 5.分析网络中出现路由…

人工智能在肿瘤亚型分类领域的研究进展|顶刊速递·24-08-13

小罗碎碎念 文献日推主题&#xff1a;人工智能在肿瘤亚型分类领域的研究进展 昨天晚上在研究鼻咽癌的病理学诊断指南&#xff0c;看到了下面这段话的时候&#xff0c;我问了自己一个问题——通过AI识别出肿瘤亚型的根本目的是什么&#xff1f;可以衔接哪些具体的下游任务&#…

「栈」实现LIFO栈(先进后出栈|堆栈|stack)的功能 / 手撕数据结构(C++)

概述 栈&#xff0c;是一种基本的数据结构&#xff0c;也是一种数据适配器。它在底层上以链表方法或动态数组方法实现。 队列的显著特点是他的添加元素与删除元素操作&#xff1a;先加入的元素总是被先弹出。 一个队列应该应该是这样的&#xff1a; --------------STACK----…

UE网络同步(一) —— 一个项目入门UE网络同步之概念解释

最近在学习UE网络同步&#xff0c;发现了一个非常好的教程&#xff0c;并且附带了项目文件&#xff0c;这里从这个小项目入手&#xff0c;理解UE的网络同步 教程链接&#xff1a;https://www.youtube.com/watch?vJOJP0CvpB8w 项目链接&#xff1a;https://github.com/awforsyt…

单片机内存映射

在一些桌面程序中&#xff0c;整个内存映射是通过虚拟内存来进行管理的&#xff0c;使用一种称为内存管理单元(MMU)的硬件结构来将程序的内存映射到物理RAM。在对于 RAM 紧缺的嵌入式系统中&#xff0c;是缺少 MMU 内存管理单元的。 因此在一些嵌入式系统中&#xff0c;比如常用…

Python 设计模式之适配者模式

文章目录 从电源适配器谈起实现适配器模式的两种方式object adapterclass adapter 从电源适配器谈起 适配者模式属于结构型设计模式&#xff0c;它的目的是使不兼容的两个对象能够相互工作。 常见的生活例子&#xff1a;去欧美国家旅游时&#xff0c;由于插口和电压不一样&am…

2024年【四川省安全员B证】新版试题及四川省安全员B证模拟考试

题库来源&#xff1a;安全生产模拟考试一点通公众号小程序 四川省安全员B证新版试题是安全生产模拟考试一点通总题库中生成的一套四川省安全员B证模拟考试&#xff0c;安全生产模拟考试一点通上四川省安全员B证作业手机同步练习。2024年【四川省安全员B证】新版试题及四川省安…

苍穹外卖项目DAY01

苍穹外卖项目Day01 1、软件开发整体介绍 1.1、软件开发流程 1.2、角色分工 项目经理&#xff1a;对整个项目负责&#xff0c;任务分配、把控进度产品经理&#xff1a;进行需求调研&#xff0c;输出需求调研文档、产品原型等UI设计师&#xff1a;根据产品原型输出界面效果图架…

第130天:内网安全-横向移动PTH哈希PTT 票据PTK密匙Kerberos密码喷射

环境搭建 这里这个环境继续上一篇文章搭建的环境 案例一&#xff1a;域横向移动-PTH-Mimikatz&NTLM 什么是pth&#xff1f; PTH Pass The Hash &#xff0c;通过密码散列值 ( 通常是 NTLM Hash) 来进行攻击。在域环境中&#xff0c;用户登录计算机时使用的域账号&…

Linux_Shell判断循环,函数实例,状态码-07

一&#xff1a;分支语句 结束语句等于开始语句得单词反着写 1.1 if语句 if 表达式 then逻辑处理 elif 表达式 then逻辑处理 else逻辑处理 fi 1.1.1 单支语句 1.1.2 双分支语句 1.1.3 多分支语句 1.2 case条件结构语句 1.2.1 case语法结构 case 表达式 in 值) ;; esac 1.2…

Redis14-缓存同步

目录 缓存同步策略 安装Canal 监听Canal 缓存同步策略 缓存数据同步的常见方式有三种&#xff1a; 1.设置有效期&#xff1a;给缓存设置有效期&#xff0c;到期后自动删除&#xff0c;再次查询时更新 优势&#xff1a;简单、方便缺点&#xff1a;时效性差&#xff0c;缓存…