位置: IT常识 - 正文

Vue结合高德地图实现HTML写自定义信息弹窗(vue接入高德地图)

编辑:rootadmin
Vue结合高德地图实现HTML写自定义信息弹窗

推荐整理分享Vue结合高德地图实现HTML写自定义信息弹窗(vue接入高德地图),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:vue调用高德地图的gps定位,vue接入高德地图,vue3使用高德地图,vue调用高德地图实现导航,vue leaflet 高德地图,vue调用高德js,vue调用高德地图实现导航,vue3使用高德地图,内容如对您有帮助,希望把文章链接给更多的朋友!

最近在写项目的时候有个需求就是根据点击地图上的点展示对应的信息,弹窗看着还挺花哨的。我在高德地图官网上还有各大平台找了如何自定义弹窗,可给出的大多数都是通过JS写HTML结构,我感觉这种不仅不好布局,而且可读性和维护性都不如直接写HTML好。于是我就在想,能不能在HTML里写这个弹窗呢?

答案是:能!

效果图如下:

Vue结合高德地图实现HTML写自定义信息弹窗(vue接入高德地图)

先说下思路吧,通过看高德地图官方文档关于InfoWindow的介绍,可以看出信息弹窗的显示内容,可以是HTML要素字符串或者HTMLElement对象。于是我就想到了在Vue里不是可以通过this.$refs获取元素的DOM节点吗?然后我就开始了第一次尝试。

先看下后台返回的数据类型:

data: [ { id: '1', //id projectName: 'xxxx项目', //项目名称 address: '山东省济南市市中区xxxxxxxxxx', //项目地址 sketchMapUrl: '116.998232,36.651352', //项目坐标 startDate: '2022-06-18', //计划开始日期 completedDate: '2022-11-18', //计划结束日期 progress: '78', //施工进度 buildPeople: '32', //施工人员 alarmNum: '8' //告警信息数目 },{ id: '2', //id projectName: 'xxxx项目', //项目名称 address: '山东省济南市市中区xxxxxxxxxx', //项目地址 sketchMapUrl: '116.998232,36.651352', //项目坐标 startDate: '2022-06-18', //计划开始日期 completedDate: '2022-11-18', //计划结束日期 progress: '78', //施工进度 buildPeople: '32', //施工人员 alarmNum: '8' //告警信息数目 } ],

我一看这种数据类型不就是用v-for吗?但是这个时候问题来了,不能直接循环后台返回的数据! 原因有二:

高德地图的AMap.InfoWindow的content属性不支持多个DOM根节点不知道用户点击的哪一个点

必须经过筛选,判断用户点击的点.

this.data.map((item) => { this.arr = item.sketchMapUrl.split(',') //自定义点图标 this.marker = new AMap.Marker({ map: this.map, icon: this.icon, position: [this.arr[0], this.arr[1]], offset: new AMap.Pixel(-13, -30), //注意,我这里判断是给点加了个额外的参数,就是数据的id extData: item.id }) this.marker.on('click', (e) => { this.singleData = [] //这里通过e.target._opts.extData和item.id进行比对,如果相同则把这项点的信息单独放一个数组里去遍历,就是html里的遍历数组 if (e.target._opts.extData === item.id) { this.singleData.push(item) } this.infoWindow.open(this.map, e.target.getPosition()) })})

这个时候可以判断点击的点了,下一步要做的就是实现自定义弹窗了。 代码如下:

<template> <div class="web-box"> <!-- 地图 --> <div id="map"></div> <!-- 地图弹窗 --> <div ref="infoWindow" class="infoWindow" > <div class="container" v-for="(item,index) in singleData" :key="index"> <!-- 这里面写弹窗布局样式 --> </div> </div></template>

js代码:

//自定义信息窗体this.infoWindow = new AMap.InfoWindow({ isCustom: true, autoMove: true,avoid: [20, 20, 20, 20], content: this.$refs.infoWindow, closeWhenClickMap: true, offset: new AMap.Pixel(16, -30)})

通过this.$refs.infoWindow拿到在HTML里写的弹窗节点,放在content内,这样我们就可以不用再写一些innerHTML和appendChild此类的代码了!

本文链接地址:https://www.jiuchutong.com/zhishi/298482.html 转载请保留说明!

上一篇:即将2023年了,我好想念那些2022年离职的兄弟(到2023年)

下一篇:VUE项目部署(vue项目部署后白屏)

  • 苹果12pro参数(苹果12pro参数配置)

    苹果12pro参数(苹果12pro参数配置)

  • 绿钻过期下载还可以听吗(绿钻过期了为什么还在)

    绿钻过期下载还可以听吗(绿钻过期了为什么还在)

  • 苹果手机xs max通话怎么录音

    苹果手机xs max通话怎么录音

  • win10智能卡服务未启动(win10智能卡服务怎么开启)

    win10智能卡服务未启动(win10智能卡服务怎么开启)

  • 索尼传照片app叫什么(索尼传照片app叫什么软件)

    索尼传照片app叫什么(索尼传照片app叫什么软件)

  • 华为mate20pro拍照教程是什么(华为mate20pro拍照得分)

    华为mate20pro拍照教程是什么(华为mate20pro拍照得分)

  • vivo手机定时关机在哪(vivo手机定时关机)

    vivo手机定时关机在哪(vivo手机定时关机)

  • 荣耀30 v30区别(荣耀30和v30哪款好)

    荣耀30 v30区别(荣耀30和v30哪款好)

  • 苹果为什么下载不了迅雷(苹果为什么下载软件不在桌面上显示)

    苹果为什么下载不了迅雷(苹果为什么下载软件不在桌面上显示)

  • itunes store是什么

    itunes store是什么

  • gp alkaline 能充电吗(gp supercell 是否可以充电)

    gp alkaline 能充电吗(gp supercell 是否可以充电)

  • gw文件用什么打开(gw格式怎么用word打开)

    gw文件用什么打开(gw格式怎么用word打开)

  • 华为watch2和gt2的区别(华为watch 2跟gt2)

    华为watch2和gt2的区别(华为watch 2跟gt2)

  • 为什么快手关注的人突然没有了(为什么快手关注不了对方)

    为什么快手关注的人突然没有了(为什么快手关注不了对方)

  • 华为mate305g手机可以用4g网吗(华为mate305g手机壳)

    华为mate305g手机可以用4g网吗(华为mate305g手机壳)

  • 如何在oppo手机里插件(如何在oppo手机上安装定位跟踪)

    如何在oppo手机里插件(如何在oppo手机上安装定位跟踪)

  • 电话卡hd怎么关闭(电话卡hd是什么意思,怎么关闭)

    电话卡hd怎么关闭(电话卡hd是什么意思,怎么关闭)

  • ipadmini4多少毫安(ipadmini4多少w)

    ipadmini4多少毫安(ipadmini4多少w)

  • 华为手机的尺子在哪里(华为手机的尺子功能)

    华为手机的尺子在哪里(华为手机的尺子功能)

  • 快手直播抢红包秘诀(快手直播抢红包怎么解除限制)

    快手直播抢红包秘诀(快手直播抢红包怎么解除限制)

  • 手机淘宝猜你喜欢在哪里(手机淘宝猜你喜欢如何快速出现)

    手机淘宝猜你喜欢在哪里(手机淘宝猜你喜欢如何快速出现)

  • oppo哪款有红外线(oppo哪一款手机有红外)

    oppo哪款有红外线(oppo哪一款手机有红外)

  • 怎样恢复手机照相机(怎样恢复手机照片视频)

    怎样恢复手机照相机(怎样恢复手机照片视频)

  • A1670是iPad Pro(a1670是ipadpro第几代)

    A1670是iPad Pro(a1670是ipadpro第几代)

  • 唯品会APP在哪里下载(唯品会商服app)

    唯品会APP在哪里下载(唯品会商服app)

  • Mac怎样打出苹果符号?Mac特殊符号怎么打?(mac怎么打出@符号)

    Mac怎样打出苹果符号?Mac特殊符号怎么打?(mac怎么打出@符号)

  • 关于将tomcat卸载干净(如何将tomcat卸载干净)

    关于将tomcat卸载干净(如何将tomcat卸载干净)

  • YOLOv5|YOLOv7|YOLOv8改各种IoU损失函数:YOLOv8涨点Trick,改进添加SIoU损失函数、EIoU损失函数、GIoU损失函数、α-IoU损失函数

    YOLOv5|YOLOv7|YOLOv8改各种IoU损失函数:YOLOv8涨点Trick,改进添加SIoU损失函数、EIoU损失函数、GIoU损失函数、α-IoU损失函数

  • 增值税发票进销项不一致
  • 原材料的采购成本包括运费吗
  • 以前年度什么意思
  • 建筑业跨区域预缴增值税
  • 增值税普票税额怎么算出来的
  • 工会建账选择哪个科目好
  • 税控盘怎么注销需要带什么东西
  • 工会经费如何做会计分录科目
  • 收到银行退回的银行汇票多余款
  • 制造费用处理
  • 原材料暂估分录
  • 利润表中列报项目
  • 地方教育费附加计入什么科目
  • 12366国税网上申报
  • 正确解读《非居民金融账户涉税信息尽职调查管理办法》
  • 未取得发票怎么做纳税调增操作
  • 维修设备领用材料会计分录怎么写
  • 劳务挂靠需要开票吗
  • 期间费用的研究费用填什么
  • 红字专用发票信息表编号在哪儿
  • 进项大于销项下月可不可以抵扣
  • 无法支付的款项转销
  • 公户转私户的钱怎么退回来
  • 实收资本和资产的关系
  • 股权转让的分录怎么做
  • 公司之间往来借款利息怎么记账
  • 这张磁盘有写保护无法格式化
  • 再次研究下cache_lite
  • PHP:curl_getinfo()的用法_cURL函数
  • 会计分录编制的步骤
  • 公司付物业费没开发票
  • win7安装包下载
  • 行政事业单位会计科目一览表
  • 迪格庄园阿拉扎尼河谷红葡萄酒750ml
  • 公允价值变动损益属于什么科目
  • 医院装修设计费用取费标准表
  • php实现递归
  • php array_slice
  • 活动策划印花税选哪个税种
  • 长期股权投资损益调整
  • 逐步结转分步法和平行结转分步法
  • php环境配置教程
  • 担保公司代偿会上征信嘛
  • 安装路灯会计分录
  • 财务费用相关指标
  • 应纳税所得额是净利润吗
  • 零申报对企业有什么影响
  • 差旅费报销范围包括
  • 买一赠一是什么促销方式
  • 财务报表没申报怎么操作呢
  • 确认主营业务收入分录怎么写
  • 应收账款如何做平
  • 工资费用核算的原始记录有
  • 金税盘技术维护费
  • 小规模其他业务收入交多少税率
  • vista sp2 旗舰版 key
  • Windows 2000中NTFS磁盘权限应用
  • freebsd使用
  • 系统技巧 制作流程
  • 怎么使用mac打电话
  • macos使用方法
  • linux登录提示
  • 不能运行应用程序的是
  • linux防火墙命令大全
  • Extjs中RowExpander控件的默认展开问题示例探讨
  • 生成器作用
  • opengl sphere
  • dos常用命令与批处理文件
  • java scripts
  • python搭建虚拟环境torch
  • java learning
  • javascript语言基础
  • Easyui 之 Treegrid 笔记
  • jquery map遍历
  • Android应用程序可以直接在ios中安装运行吗
  • 重庆市电子税务局发票查询
  • 江苏省高新区地图
  • 服务收入确认条件有哪些
  • 小额贷款公司在职人员和离职人员情节哪种轻
  • 二手商铺买卖
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设