当前位置: 首页 > 知识库问答 >
问题:

vue.js - 如何在Vue项目中实现地图拖拽缩放与Dialog对话框共存?

仉明知
2024-04-23

大屏项目首页加载地图然后加载Dialog 对话框,展示一些信息。如何实现当Dialog 对话框没有关闭时地图也可以拖拽缩放。

页面
image.png

<ScaleScreen :width="1920" :height="1080" class="scale-wrap" :selfAdaption="$store.state.setting.isScale">    <div id="map" style="z-index: 2;">      <div id="marks" ref="marks"></div>      <div id="mycontrol" style="z-index: 1;position: absolute;width:28px;height:28px;" ref="mycontrol"        :class="[flag?'ol-full-screen ol-unselectable ol-control partMap':'ol-full-screen ol-unselectable ol-control fullMap']">        <button class="ol-full-screen-false" @click="testControl()">⤢</button>      </div>    </div>    <div id="butt" style="width: 110px; height: 110px; position: fixed;top: 10px;right: 50px;z-index: 1;">      <el-dialog :visible.sync="open_dw" width="20%" :modal="false" :append-to-body="true" :close-on-click-modal="false" v-dialogDrag :before-close="handleDialogClose">        <template slot="title">          <div class='dialog_title'>对话框</div>            <el-row>          <el-col :span="2" :xl="2" :lg="2" :md="2" :sm="12" :xs="24" style="min-height: 1px">          </el-col>          <el-col :span="5" :xl="5" :lg="5" :md="5" :sm="12" :xs="24">          <div class="gutter" :title="sssj_jcdmc">体温:{{sssj_jcdmc}}</div>          </el-col>            </el-row>        </template>      </el-dialog>    </div>  </ScaleScreen>

共有2个答案

方季同
2024-04-23

element ui里面有
close-on-click-modal是否可以通过点击 modal 关闭 Dialog
:close-on-click-modal="false"
modal 是否需要遮罩层
:modal="false"

常子濯
2024-04-23

在 Vue 项目中实现地图拖拽缩放与 Dialog 对话框共存的关键在于确保 Dialog 对话框不会阻止地图的交互事件。这通常涉及到 CSS 的 z-index 属性和 Vue 组件的交互处理。

首先,确保地图和 Dialog 对话框的 HTML 元素有正确的 z-index 设置。z-index 属性定义了元素的堆叠顺序,较高的值表示元素会出现在较低值元素的上方。在你的例子中,#map#butt 中的 el-dialog 都有 z-index 设置,但需要确保 #mapz-index 高于 el-dialog

其次,确保 Dialog 对话框在打开时不会阻止地图的交互事件。这通常可以通过在 Dialog 对话框上设置 :modal="false" 来实现,这样点击 Dialog 对话框外部的区域时不会关闭它。你的代码中已经设置了 :modal="false",这是正确的。

最后,如果你的地图库(例如 OpenLayers)提供了事件处理机制,确保在 Dialog 对话框打开时不会取消或改变地图的事件监听器。

你的代码示例看起来已经考虑到了这些因素,因此应该能够实现地图拖拽缩放与 Dialog 对话框共存。如果仍然遇到问题,可能需要检查地图库的具体实现和事件处理机制,确保它们与 Vue 的事件系统兼容。

此外,确保你的 Vue 项目中没有其他地方在 Dialog 对话框打开时修改了地图的事件监听器或 z-index 设置。这可能会覆盖你的设置并导致问题。

综上所述,你的代码应该能够实现在 Dialog 对话框打开时,地图仍然可以拖拽缩放的功能。如果仍然遇到问题,建议检查地图库的具体文档和 Vue 的事件处理机制。

 类似资料:
  • 本文向大家介绍JavaScript实现拖拽和缩放效果,包括了JavaScript实现拖拽和缩放效果的使用技巧和注意事项,需要的朋友参考一下 本文实例为大家分享了JavaScript实现拖拽和缩放效果的具体代码,供大家参考,具体内容如下 以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持呐喊教程。

  • 本文向大家介绍原生js实现拖拽移动与缩放效果,包括了原生js实现拖拽移动与缩放效果的使用技巧和注意事项,需要的朋友参考一下 本文实例为大家分享了js实现拖拽移动与缩放效果的具体代码,供大家参考,具体内容如下 效果图如下-实现了简单的拖拽和缩放功能 第一步—简单的拖拽功能 效果如下,简单的拖拽 第二步—简单的缩放功能 1.设置方位 2.给原型绑定缩放的方法 效果图如下 最终效果,盒子可以拖动,可以缩

  • 本文向大家介绍vue实现拖拽效果,包括了vue实现拖拽效果的使用技巧和注意事项,需要的朋友参考一下 vue中实现拖拽效果,供大家参考,具体内容如下 首先要搞明白分清clientY pageY screenY layerY offsetY的区别 作用3(事件对象中记录的鼠标位置) 语法 解释 evt.screenX 相对于屏幕的左上角为原点 evt.screenY evt.clientX 相对于浏览

  • 请问下像图中一样,可以通过拖拽节点然后实现新增、删除节点的流程图功能用vue怎么实现?和后端怎么交互呢?谢谢。 搜索无果,图片高糊还请担待

  • 本文向大家介绍MFC实现对话框编辑控件上拖拽文件,包括了MFC实现对话框编辑控件上拖拽文件的使用技巧和注意事项,需要的朋友参考一下 本文实例为大家分享了MFC实现对话框编辑控件上拖拽文件的具体代码,供大家参考,具体内容如下 步骤 1、重载CEdit类 2、添加编辑框控件 首先,重载CEdit类,定义一个派生类CDragEdit类,并重载它的WM_CREATE方法,在其中添加DragAcceptFi