位置: 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项目部署后白屏)

  • 电子邮件的工作原理是什么(电子邮件工作在哪一层)

    电子邮件的工作原理是什么(电子邮件工作在哪一层)

  • 迅雷磁盘过于繁忙怎么解决(用迅雷下载磁盘过于繁忙)

    迅雷磁盘过于繁忙怎么解决(用迅雷下载磁盘过于繁忙)

  • 手机屏幕尺寸比例(手机屏幕尺寸比例dpi)

    手机屏幕尺寸比例(手机屏幕尺寸比例dpi)

  • 小红书如何置顶作品(小红书如何置顶自己的评论)

    小红书如何置顶作品(小红书如何置顶自己的评论)

  • 7p跟8p有什么区别(7p和8p什么区别)

    7p跟8p有什么区别(7p和8p什么区别)

  • 有线桥接两个路由器可以设置同名同密码吗(有线桥接两个路由器可以无缝连接)

    有线桥接两个路由器可以设置同名同密码吗(有线桥接两个路由器可以无缝连接)

  • 华为荣耀8x怎么隐藏应用程序(华为荣耀8x怎么录屏)

    华为荣耀8x怎么隐藏应用程序(华为荣耀8x怎么录屏)

  • 店铺基本设置的页面中的重点是店标和什么(店铺基本设置的页面中的重点是电表盒)

    店铺基本设置的页面中的重点是店标和什么(店铺基本设置的页面中的重点是电表盒)

  • 电脑音频线插哪个孔(电脑音频插线示意图)

    电脑音频线插哪个孔(电脑音频插线示意图)

  • oppo手机无故出现短信提示声音(oppo手机无故出现黑屏按键是亮的是什么原因)

    oppo手机无故出现短信提示声音(oppo手机无故出现黑屏按键是亮的是什么原因)

  • 微信好友删除了怎么找回来(微信好友删除了还能不能找回来)

    微信好友删除了怎么找回来(微信好友删除了还能不能找回来)

  • 抖音视频上传多久才有播放量(抖音视频上传多大)

    抖音视频上传多久才有播放量(抖音视频上传多大)

  • 苹果8plus支持双卡吗(苹果8plus支持双卡不)

    苹果8plus支持双卡吗(苹果8plus支持双卡不)

  • 苹果手机掉水里了应该怎么处理(苹果手机掉水里开不了机)

    苹果手机掉水里了应该怎么处理(苹果手机掉水里开不了机)

  • 惠普omen键有什么用(惠普omen快捷键)

    惠普omen键有什么用(惠普omen快捷键)

  • 电脑微信怎么视频不了(电脑微信怎么视频录制)

    电脑微信怎么视频不了(电脑微信怎么视频录制)

  • wps表格怎么设置行高(wps表格怎么设置选择项)

    wps表格怎么设置行高(wps表格怎么设置选择项)

  • 抖音的标题怎么复制(抖音的标题怎么才能不动)

    抖音的标题怎么复制(抖音的标题怎么才能不动)

  • 抖音注销后是什么状态(抖音注销后是什么状态,抖音注销7天了还没答复)

    抖音注销后是什么状态(抖音注销后是什么状态,抖音注销7天了还没答复)

  • 华为荣耀10有没有红外线(华为荣耀10有没有OTG)

    华为荣耀10有没有红外线(华为荣耀10有没有OTG)

  • 三星s10是什么屏幕(三星s10采用的屏幕是什么类型?)

    三星s10是什么屏幕(三星s10采用的屏幕是什么类型?)

  • cpu天梯图2022最新版高清图(cpu天梯图2022最新版1240p)

    cpu天梯图2022最新版高清图(cpu天梯图2022最新版1240p)

  • 调整系统保留带宽(调整系统保留带宽的命令)

    调整系统保留带宽(调整系统保留带宽的命令)

  • setenv命令  设置与显示系统环境变量信息(set nu命令)

    setenv命令 设置与显示系统环境变量信息(set nu命令)

  • phpcms文章浏览次数始终不变(php网站访问量大怎么优化)

    phpcms文章浏览次数始终不变(php网站访问量大怎么优化)

  • 小规模纳税人如何申报
  • 管理费用和研发费用的区别
  • 企业账户被冻结可以去开其他账户吗
  • 企业递延所得税费用的计算公式
  • 财务软件计提所得税分录
  • 收到固定资产抵账增值税计税基础
  • 管理费用已付款未收到发票
  • 代扣个税手续费返还怎么申请
  • 公司买车付首付款个人还贷怎么做会计分录
  • 逾期包装物押金消费税会计分录
  • 小规模纳税人查账征收所得税税率
  • 广告费发票的税率
  • 营改增后发票
  • 固定资产折旧税务处理
  • 仓库多入库怎么退
  • 店面转让出去收到的钱如何做账?
  • 离职补偿金的税率
  • 资产总额小于所有者权益合计
  • 单位内部控制
  • 代理费是指
  • 物流补贴需要交税吗
  • SymSPort.exe - SymSPort是什么进程 有何作用
  • 腾讯手游助手使命召唤怎么滑铲
  • 如何冲回以前年度账户
  • 资产负债表中的固定资产怎么算
  • win10重启按什么键重置
  • php实现的跟QQ和MSN类似的BICQ v2.0.0
  • php的!
  • 工程机械设备租赁价格
  • 在linux系统中 用来存放系统所需
  • 权益法投资收益在年末确认
  • php数组函数有哪些
  • 其他应收款可以和其他应付款对冲吗
  • 固定资产抵债债权人账务处理
  • 企业盘盈资产开什么发票
  • php生成随机字母数字代码
  • 已计提完的固定资产怎么弄
  • npm install 的 --save 选项是什么?
  • 失控发票成本转出怎么做账
  • get请求与post
  • wallengine
  • 货币资金有余额怎样填写清税申报表
  • 日记账对方科目是什么意思
  • 运输发票必须附票吗
  • 注解注入
  • 印花税怎么交税率是多少
  • 自然人扣缴系统怎么申报个税
  • 请问资产负债表中净资产怎么算
  • 个体工商户生产经营所得税税率表
  • 车间费用计入什么
  • 失控发票进项税额结转成本
  • 员工安全培训费可以抵扣增值税吗
  • 计提员工工资是什么意思
  • 工厂没给工人买社保我们应该找哪个部门
  • 营业外支出如何做账
  • 旅行社滞纳金计算公式
  • 二次加工型的企业有哪些
  • vpengine.exe进程
  • win10系统预览版
  • ubuntu21.04中文
  • 苹果电脑截图快捷键
  • reg.exe是什么东西?
  • bootcamp安装windows一直小白杠
  • 电脑没有声音怎么恢复按哪个键
  • xp无法访问win7电脑
  • find按照文件大小查找
  • linuxzen
  • win10如何删除windows账户
  • vs opengl配置
  • node分页接口
  • 用python三角形
  • js中用var定义变量的格式
  • 深入理解计算机系统 电子书
  • javascript怎么学
  • perl vs python
  • python simpy
  • 辽宁省社保系统操作
  • 长沙市各个区的县市排名
  • 办理企业步骤
  • 国税合并地税
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设