位置: IT常识 - 正文

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

发布时间:2024-01-17
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项目部署后白屏)

  • 微信被好友拉黑怎么恢复(微信被好友拉黑了怎么加回来对方不知道)

    微信被好友拉黑怎么恢复(微信被好友拉黑了怎么加回来对方不知道)

  • qq怎么提现到微信红包(qq怎么提现到微信)

    qq怎么提现到微信红包(qq怎么提现到微信)

  • iqoo8快速启动应用小窗如何设置(iqoo5快速启动应用)

    iqoo8快速启动应用小窗如何设置(iqoo5快速启动应用)

  • 手机换外屏后有小气泡(手机换外屏后有黑影几天能消)

    手机换外屏后有小气泡(手机换外屏后有黑影几天能消)

  • 华为手机语音播放失败什么原因(华为手机语音播报在哪里设置)

    华为手机语音播放失败什么原因(华为手机语音播报在哪里设置)

  • 苹果7plus屏幕上的小圆点怎么设置(苹果7plus屏幕上的圆点怎么设置)

    苹果7plus屏幕上的小圆点怎么设置(苹果7plus屏幕上的圆点怎么设置)

  • 出现loading是什么意思(loading…100%什么意思)

    出现loading是什么意思(loading…100%什么意思)

  • 苹果几是双卡双待手机(苹果几是双卡双带的)

    苹果几是双卡双待手机(苹果几是双卡双带的)

  • 安卓连不上iphone11热点(安卓连不上iphone13热点是怎么回事)

    安卓连不上iphone11热点(安卓连不上iphone13热点是怎么回事)

  • 双击亮屏和抬手亮屏哪个省电(双击亮屏和抬手亮屏)

    双击亮屏和抬手亮屏哪个省电(双击亮屏和抬手亮屏)

  • 互感器型号有哪些(互感器的规格型号)

    互感器型号有哪些(互感器的规格型号)

  • qq打不了字怎么回事(qq打不了字怎么回事苹果手机)

    qq打不了字怎么回事(qq打不了字怎么回事苹果手机)

  • 计算器上off是什么意思(计算器上off是什么键子)

    计算器上off是什么意思(计算器上off是什么键子)

  • 乘车码刷了两次能退款吗(乘车码刷两次,下车怎么刷)

    乘车码刷了两次能退款吗(乘车码刷两次,下车怎么刷)

  • 微信群太多怎么全部退出(微信群太多怎么折叠)

    微信群太多怎么全部退出(微信群太多怎么折叠)

  • 拼多多要是没人拼单会怎样(拼多多要是没人拼单)

    拼多多要是没人拼单会怎样(拼多多要是没人拼单)

  • 如何避免画册设计稿出现错误(设计画册的模式)

    如何避免画册设计稿出现错误(设计画册的模式)

  • viv0呼叫转移怎么设置(viov手机呼叫转移)

    viv0呼叫转移怎么设置(viov手机呼叫转移)

  • a1932苹果是什么型号(苹果a1934是什么版)

    a1932苹果是什么型号(苹果a1934是什么版)

  • 平板电脑可以插u盘吗(平板电脑可以插网银U盾吗)

    平板电脑可以插u盘吗(平板电脑可以插网银U盾吗)

  • 苹果x原彩显示费电吗(苹果x原彩显示没有了)

    苹果x原彩显示费电吗(苹果x原彩显示没有了)

  • 微电脑时控开关怎么设置(微电脑时控开关怎么调时间)

    微电脑时控开关怎么设置(微电脑时控开关怎么调时间)

  • pcie2.0和3.0区别(pcie2.0和3.0区别干嘛用的)

    pcie2.0和3.0区别(pcie2.0和3.0区别干嘛用的)

  • 小度在家没网络能用吗(小度今天没有网络)

    小度在家没网络能用吗(小度今天没有网络)

  • defaultuser0是什么(defaultusee0)

    defaultuser0是什么(defaultusee0)

  • iotop命令  监视磁盘I/O状态

    iotop命令 监视磁盘I/O状态

  • 小规模30万免增值税1点怎么申报税款
  • 离境退税政策文件
  • 一般纳税人改成小规模纳税人
  • 银行预留印鉴是公章还是财务章
  • 个人出租商铺如何缴纳房产税
  • 免交增值税免印花税吗
  • 小规模纳税人开票税率
  • 房产公司售楼部装修费入什么会计科目
  • 递延所得税资产和递延所得税负债
  • 企业所得税季报时间
  • 企业对公账户转法人私户
  • 应交税费明细表填制
  • 5个点的税率是多少
  • 银行贷款减值准备转回处理
  • 固定资产盘亏是营业外支出吗
  • 从政府取得土地没有进项
  • 销售回扣分录
  • 赠品折扣计算法
  • 自然人能申请破产吗?
  • 企业收到退回商品的会计分录
  • 货物正常报损的分录
  • 注册商标成功的标志图片
  • 金穗开发票时怎样添加商品?
  • 零售业税率多少?如何交?
  • 会务费抵扣限额
  • 同一个月两家单位交公积金
  • 购入苗木的会计分录
  • 企业筹办费会计处理
  • 应交税费的明细账怎么手工登记
  • 出口佣金比例
  • 已核销的应收账款
  • 腾达路由器管理员密码
  • 投资长期溢价债券,容易获取投资收益
  • 对增值税发票开具方面有何要求?
  • 王者荣耀中苏烈的最强出装
  • PHP:xml_set_start_namespace_decl_handler()的用法_XML解析器函数
  • 上一年度的费用入账需要分摊吗
  • 个税手续费会计分录
  • php枚举类
  • 备抵法是什么科目
  • 鸟瞰高耸入云的成语
  • php和aspnet哪个好
  • vue three.js
  • diff比较文件不同输出
  • 帝国cms和thinkphp哪个好
  • mysql用在哪些方面
  • 帝国cms模板怎么样用
  • 不抵扣勾选有什么风险
  • 经营费用包括工资吗
  • 哪些企业可以不计提盈余公积
  • 资本公积转为实收资本会计科目
  • 福利费的进项税额会计分录
  • 出资注意事项有哪些内容
  • 货物运费是否计入成本
  • 商贸公司主营业务成本会计分录
  • 上月有留底税额时本月缴纳税款时怎么做分录
  • 员工垫付的费用怎样记账
  • 我的发票查询
  • 工业企业应通过其他应付款科目核算的有
  • 过程要求可包括哪些内容
  • 2003怎么创建用户
  • centos调出命令行
  • linux限制用户登录
  • win7 注册表
  • 关于激活剂的叙述正确的是
  • linux磁盘空间不足怎么清理
  • nodejs middleware
  • jquery提交form表单数据
  • 简述jquery的优势
  • unity怎么导入3d模型
  • nvm下载安装
  • jquery中的动画方法有哪些
  • js easyui
  • 广告费属于什么会计科目
  • 广东民生求助热线电话是多少
  • 污水处理费收入
  • 地方税务局受谁领导
  • 如何当好一名税务局长
  • 长沙市各个区的县市排名
  • 南通地税电话号码
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号