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

  • 小米门铃如何重新连接网络(小米门铃如何重置网络)

    小米门铃如何重新连接网络(小米门铃如何重置网络)

  • 抖音人气票怎么送 (抖音人气票怎么打)

    抖音人气票怎么送 (抖音人气票怎么打)

  • 一张卡可以绑定两个支付宝吗(一张卡可以绑定多个nfc设备吗)

    一张卡可以绑定两个支付宝吗(一张卡可以绑定多个nfc设备吗)

  • 苹果11屏幕是什么材质的(苹果11屏幕是什么材质做的)

    苹果11屏幕是什么材质的(苹果11屏幕是什么材质做的)

  • 为什么会有开源和闭源(为什么开源的比较安全)

    为什么会有开源和闭源(为什么开源的比较安全)

  • ipad分屏只能悬浮(ipad每次分屏都成了悬浮呢)

    ipad分屏只能悬浮(ipad每次分屏都成了悬浮呢)

  • 照片重命名的快捷键(照片重命名快捷键ctrl加什么功能)

    照片重命名的快捷键(照片重命名快捷键ctrl加什么功能)

  • alt加f4是什么快捷键(alt+ f4)

    alt加f4是什么快捷键(alt+ f4)

  • 什么是圆角屏(什么是圆角屏?)

    什么是圆角屏(什么是圆角屏?)

  • 编码器的作用(旋转编码器的作用)

    编码器的作用(旋转编码器的作用)

  • b365主板支持什么cpu(b365主板支持什么固态硬盘)

    b365主板支持什么cpu(b365主板支持什么固态硬盘)

  • 苹果手机播放不了视频怎么办(苹果手机播放不了qq音乐)

    苹果手机播放不了视频怎么办(苹果手机播放不了qq音乐)

  • 交换机接路由器哪个口(交换机接路由器wan还是lan)

    交换机接路由器哪个口(交换机接路由器wan还是lan)

  • reno3pro和reno3区别(reno3pro跟reno3区别)

    reno3pro和reno3区别(reno3pro跟reno3区别)

  • 华为手机如何连拍(华为手机如何连接打印机打印)

    华为手机如何连拍(华为手机如何连接打印机打印)

  • 苹果x摄像头传感器型号(摄像头像苹果x的手机)

    苹果x摄像头传感器型号(摄像头像苹果x的手机)

  • 苹果手机怎么唤醒小爱音箱(苹果手机怎么唤醒密码解锁)

    苹果手机怎么唤醒小爱音箱(苹果手机怎么唤醒密码解锁)

  • ios13怎么屏幕截图(iphone13如何屏幕截图)

    ios13怎么屏幕截图(iphone13如何屏幕截图)

  • 苹果x能用18w快充吗(苹果x支持18w快充吗用快充头充有危害吗)

    苹果x能用18w快充吗(苹果x支持18w快充吗用快充头充有危害吗)

  • 酷狗扫描本地音乐在哪里(酷狗扫描本地音乐屏蔽60秒以下)

    酷狗扫描本地音乐在哪里(酷狗扫描本地音乐屏蔽60秒以下)

  • 淘气值亲情怎么算互动(淘气值亲情号怎么算互动一次)

    淘气值亲情怎么算互动(淘气值亲情号怎么算互动一次)

  • oled屏闪解决方法(如何解决oled屏的闪屏问题)

    oled屏闪解决方法(如何解决oled屏的闪屏问题)

  • ipad pro有耳机孔吗(ipad pro2021耳机插孔)

    ipad pro有耳机孔吗(ipad pro2021耳机插孔)

  • 小米手环nfc有什么用(小米手环NFC有什么功能)

    小米手环nfc有什么用(小米手环NFC有什么功能)

  • iphone照片反色(iphone照片反色app)

    iphone照片反色(iphone照片反色app)

  • Web自动化之Selenium常用操作(web自动化selenium实战项目)

    Web自动化之Selenium常用操作(web自动化selenium实战项目)

  • 解决echarts报错Cannot read properties of null (reading ‘getAttribute‘)(echarts遇到的坑)

    解决echarts报错Cannot read properties of null (reading ‘getAttribute‘)(echarts遇到的坑)

  • 新成立的销售公司有哪些
  • 投资性房地产发生减值迹象均要计提减值准备
  • 发票税率开错了按什么申报
  • 房地产怎么计算需要交多少税
  • 小规模增值税做那个费用科目
  • 必须开具增值税专用发票
  • 企业期货投资收益税务案例
  • 房地产未确认收入情况说明
  • 公司支付宝付款
  • 个人开具建筑服务发票
  • 公司买货车可以分期付款吗
  • 增值税发票系统怎么升级
  • 退税文件提醒怎么看
  • 一般纳税人有哪些费用
  • 非居民纳税人怎么纳税
  • 金税盘年费怎么做账
  • 免抵退税额如何计算
  • 研发费用进成本吗
  • 为生产产品而领用材料的实际成本应计入什么账户的借方
  • 公司投资理财需要纳税吗
  • 企业处置固定资产怎么纳税
  • 食堂购买蔬菜计算公式
  • 劳务派遣公司账目如何做
  • uniapp vuecli
  • 小企业会计准则适用于哪些企业
  • 银行承兑汇票的会计分录
  • 优酷路由宝还有用吗
  • wordpress自定义函数
  • 企业改制土地增值税政策
  • 以前年度未入账固定资产账务处理
  • 增值税加计抵减企业所得税如何处理
  • 定期定额个体户超定额怎样申报
  • nlp自然语言处理框架
  • 个体工商户开增值税专用发票
  • wordpress安装主题致命错误
  • 债权投资和其他债权投资举例
  • 营业额的纳税比例是多少
  • 发票金额大于实付金额
  • 补交上年度企业所得税税额需要本年度纳税调增吗
  • 应付账款的四大基本要素
  • 用友作废的凭证怎么恢复
  • 机票退票手续费多少
  • 销售免税货物的会计分录
  • 小规模纳税人买车可以抵扣哪些税
  • 银行承兑汇票托收凭证
  • 苗木补偿款
  • 现金和银行存款的区别
  • 什么是备查账
  • mysql处理
  • sqlserver中存储过程
  • wp8.0升级8.1
  • vcdcontroltool
  • centos清理缓存
  • win8系统怎么安装win10
  • os x10.8.5
  • win8打开蓝牙设置
  • grep命令用法
  • JavaScript对HTML DOM使用EventListener进行操作
  • opengl 投影矩阵
  • bootstrap怎么用
  • javascript entries
  • js时间范围
  • jquery prototype
  • nodejs使用视频教程
  • 简要说明javascript的作用
  • javascript语言介绍
  • node 动态路由
  • python3中map
  • 举例说明json数据格式的语法
  • js中截取字符串的方法
  • javascript怎么学
  • android注入so
  • js 输入
  • 国家税务总局惠州仲恺高新技术产业开发区税务局
  • 学历认证取消申请还能再申请吗
  • 港口的码头用地
  • 江西医保缴费怎么交
  • 2021西安雁塔区第一幼儿园运动会
  • 资源税从价计征的有哪些
  • 小规模纳税人收什么税
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设