【vue+leaflet+elementUI】vue项目中在Leaflet弹框Popup中使用elementui组件(三)

看效果:

leaflet主页面

1.html

javascript 复制代码
<template>
  <div class="imgBox">
    <div id="imageMap"></div>
    <Popup ref="dialogLayer" v-if="isDialog" /> // 组件先隐藏
  </div>
</template>
// import... 初始模块照搬引入
// 引入组件
import Popup from '@/components/imgLayout/popup.vue'
export default {
  components: { Popup },
  data() {
    return {
      map: null,
      bounds: [
        [0, 0],
        [0, 0],
      ],
      isDialog: false, // 是否显示弹窗
      dialogTarget: '', // 弹窗dom
    }
  },
}

2.js

javascript 复制代码
   // 地图初始化,平面图初始化的方法没有改动,照搬之前的就可以
  // 图层绘制完成
    createClick(e) {
      // 绑定图层点击事件
      e.layer.on('click', this.layClick)
      // 弹窗,图层绘制完自动弹窗 参数:(当前图层的layer, 当前图层的中心点的坐标)
      this.dialog(e.layer, e.layer.getBounds().getCenter())
    },
    // 图层点击事件
    layClick(e) {
      // 弹窗, 参数:(当前点击的图层的layer, 点击的坐标)
      this.dialog(e.target, e.latlng)
    },
    // 弹窗事件
    dialog(target, latlng) {
      this.dialogTarget = target // 主要是在弹窗组件中用到
      this.isDialog = true
      this.$nextTick(() => {
        L.popup({ closeOnClick: false, closeButton: false }).setLatLng(latlng).setContent(this.$refs.dialogLayer.$el).openOn(this.map)
        // 修复点击popup模态框时,select下拉列表不消失问题
        let dom = document.getElementsByClassName('leaflet-popup-content-wrapper')[0]
        let _this = this
        dom.onclick = function () {
          _this.$refs.dialogLayer.$refs.selectRef.visible = false
        }
      })
    },

弹窗的子组件 popup.vue

新建一个组件 popup.vue 这个组件里面就没什么要求了,按你的需求来,我这里就随便引入一个select,input,button

html 复制代码
<template>
	<div>
		...
		<div>
	      <span>设备编号:</span>
	      <el-input v-model="devId" placeholder="请输入设备编号"></el-input>
	    </div>
	    <div>
	      <el-button @click="close">关 闭</el-button>
	      <el-button type="primary" @click="confirm">确 定</el-button>
	    </div>
	</div>
</template>
javascript 复制代码
  close() {
      // console.log('关闭弹窗')
      //this.isDialog = false不行 只能调用父元素的popup关闭
      this.$parent.map._popup.close()
    },
  mounted(){
	//popup展开,给当前图层设置样式
	 // this.$parent.dialogTarget.setStyle({
    //   ...
    // })
  }

所有示例代码已上传,点击前往获取 [done !]

相关推荐
崔庆才丨静觅7 小时前
hCaptcha 验证码图像识别 API 对接教程
前端
passerby60618 小时前
完成前端时间处理的另一块版图
前端·github·web components
掘了8 小时前
「2025 年终总结」在所有失去的人中,我最怀念我自己
前端·后端·年终总结
崔庆才丨静觅8 小时前
实用免费的 Short URL 短链接 API 对接说明
前端
崔庆才丨静觅9 小时前
5分钟快速搭建 AI 平台并用它赚钱!
前端
崔庆才丨静觅9 小时前
比官方便宜一半以上!Midjourney API 申请及使用
前端
Moment9 小时前
富文本编辑器在 AI 时代为什么这么受欢迎
前端·javascript·后端
崔庆才丨静觅9 小时前
刷屏全网的“nano-banana”API接入指南!0.1元/张量产高清创意图,开发者必藏
前端
剪刀石头布啊9 小时前
jwt介绍
前端
爱敲代码的小鱼9 小时前
AJAX(异步交互的技术来实现从服务端中获取数据):
前端·javascript·ajax