Vue2-传单地图在 BoostrapVue 模式中无法正确显示

2024-02-05

这是我的问题 - Vue2 传单地图无法在 BootstrapVue 模式中正确渲染。

这是它的视觉效果(它应该只显示海洋)

<template>
  <div>
    <b-modal size="lg" :visible="visible" @hidden="$emit('clear')" title="Event details">
      <div class="foobar1">
        <l-map :center="center" :zoom="13" ref="mymap">
          <l-tile-layer :url="url" :attribution="attribution"></l-tile-layer>
          <l-marker :lat-lng="center"></l-marker>
        </l-map>
      </div>

      <template slot="modal-footer">
        <b-btn variant="danger" @click="deleteEventLocal(event.id)">Delete</b-btn>
      </template>
    </b-modal>
  </div>
</template>

<script>
import * as moment from "moment";
import { LMap, LMarker, LTileLayer } from "vue2-leaflet";
import { deleteEvent } from "./api";
import "vue-weather-widget/dist/css/vue-weather-widget.css";
import VueWeatherWidget from "vue-weather-widget";

export default {
  data() {
    return {
      center: L.latLng(event.latitude, event.longitude),
      url: "http://{s}.tile.osm.org/{z}/{x}/{y}.png",
      attribution:
        '&copy; <a href="http://osm.org/copyright">OpenStreetMap</a> contributors'
    };
  },
  props: {
    visible: {
      type: Boolean
    },
    event: {
      required: true,
      type: Object
    }
  },
  methods: {
    async deleteEventLocal(id) {
      await deleteEvent(id);
      this.$emit("refresh");
      this.$emit("clear");
    }
  },
  components: {
    weather: VueWeatherWidget,
    LMap,
    LMarker,
    LTileLayer
  }
};
</script>

正如您所看到的,没有任何 CSS 规则可以使地图像它那样溢出到模态之外。这很奇怪。

我想问这个问题是为了自己回答,因为我之前找不到解决方案。


有 3 个问题导致了这种情况的发生。

1.首先 - 我忘记将传单 css 加载到main.js- 这就是为什么传单地图在模式之外。

//src/main.js
import '@babel/polyfill';
import Vue from 'vue';
import './plugins/bootstrap-vue';
import App from './App.vue';
import router from './router';
import store from './store';
//above imports not important to this answer

import 'leaflet/dist/leaflet.css'; //<--------------add this line

new Vue({
  router,
  store,
  render: h => h(App),
}).$mount('#app');

2.现在地图可能会消失。设置宽度和高度l-map组件的容器。我使用了一个类,但你可以使用 style="" 等。

<div class="foobar1"> <!-- <--- Add a class on l-map's container -->
  <l-map :center="center" :zoom="13">
    <l-tile-layer :url="url" :attribution="attribution"></l-tile-layer>
    <l-marker :lat-lng="center"></l-marker>
  </l-map>
</div>
<style lang="scss">
  .foobar1 { /* <--- class we added above */
    width: 100%;
    height: 400px;
  }
</style>

3.现在您的地图将在模式中渲染,但如果您移动地图的视图,您会看到传单没有及时下载地图的方块。 你会看到这样的东西:

要解决此问题:

  • 创建一个事件处理程序b-modal为了@shown event.

     <b-modal
       @shown="modalShown"
    
    
       @hidden="$emit('clear')"
       size="lg"
       :visible="visible"
       title="Event details"
     >
    

    我打电话给我的modalShown.

  • 然后,添加一个ref归因于你的l-map。我打电话给我的mymap.

    <l-map :center="center" :zoom="13" ref="mymap"> <!-- ref attribute added to l-map -->
      <l-tile-layer :url="url" :attribution="attribution"></l-tile-layer>
      <l-marker :lat-lng="center"></l-marker>
    </l-map>
    
  • 然后,创建一个modalShown视图/组件的 Vue 方法中的方法并调用invalidateSize() inside.

    export default {
      data() {
       //some data here
      }
    
      methods: {
         modalShown() {
          setTimeout(() => {
            //mapObject is a property that is part of leaflet
            this.$refs.mymap.mapObject.invalidateSize(); 
          }, 100);
        }
      }
    }
    

现在一切都应该没问题了:

  • 地图不应溢出模式之外
  • 地图应该是可见的(废话)
  • 地图方块应在地图主体内下载

这是我的完整代码,它包含一些特定于我的应用程序的内容,但总的来说它包含上面的所有代码片段。 https://gist.github.com/sethidden/0944dc1135115ba3fb1030892d227e34

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Vue2-传单地图在 BoostrapVue 模式中无法正确显示 的相关文章

  • Vue js - 在同一级别的两个组件内传递数据

    我有需要从一个传递的数据component1到另一个component2 我不使用vuex or router 组件树 Parent Component1 Component2 从一开始component1我发出 ajax 请求 检索信息并
  • 如何从传单绘制 api 删除按钮中删除保存选项?

    我的问题类似于leaflet draw 删除按钮删除 全部清除 操作 https stackoverflow com questions 46934768 leaflet draw delete button remove clear al
  • Bootstrap 4 - 带按钮标签的居中文本

    我想实现一个非常简单的目标 我有一条线 文本向左对齐 按钮向右对齐 我希望文本与按钮的标签垂直对齐 我尝试使用填充 边距 但没有任何效果 我相信我缺少一个简单而智能的解决方案 笨蛋演示 https plnkr co edit KwRF2uO
  • 未向导出的模块提供此上下文

    我对问题的提出感到不满意 受到鼓励提出改进建议 另外 请记住 由于无知 无知导致烦恼 我对问题的诊断可能有缺陷 对于那个很抱歉 In 这个答案 https stackoverflow com a 40893583 1525840建议使用th
  • 在传单包中使用 popupOptions()

    我正在关注 Robin Lovelace 博客上的传单教程 http robinlovelace net r 2015 02 01 leaflet r package html http robinlovelace net r 2015 0
  • 使用 Leaflet 加载页面时 moveend 事件多次触发

    我需要在地图平移或缩放时执行一些操作 因此我向该事件附加了一个回调moveend map on moveend function code stuff 它工作正常 但是当页面加载时 该事件被触发三次 我不知道为什么 可能是因为在创建过程中地
  • 如何将 Jitsi Meet 添加到 Vuejs

    我已在 public html 的正文中加载了 jitsi meet 脚本 并且我有一个组件 如下所示
  • 如何使Bootstrap 4兼容IE9和IE10

    哪些 polyfill 库可用于使 Bootstrap 4 或 Bootstrap 4 的大部分 与 IE 9 兼容 我遇到过这些库 https github com jonathantneal flexibility https gith
  • React-leaflet 未加载图块并镀金 403 请求错误

    我正在使用 React leaflet 和瓷砖提供商 Stadia OSM Bright 当我在本地运行它时显示图块 但是当我进行构建并上传到服务器时它停止加载图块并开始给出请求 403 禁止错误 我有一个 API 密钥 但没有找到任何解决
  • 如何获取传单标记簇中点击事件的图块?

    这是我的代码 function onMapClick e e originalEvent defaultPrevented true var orig e originalEvent console log orig target map
  • Vue 监听 Vuex 提交吗?

    有没有一种方法可以监听 Vuex 提交 而不观察任何随提交而更改的属性 只是简单地找出是否发生了提交 我有一个 Filter 组件 想将其放入 NPM 包中 但我已经有一个用例 在该用例中 我希望设置一个 cookie 在选择过滤器时存储过
  • 用变量字符串设置槽的简单方法?

    有许多slot例子 但没有克莱尔和简单 因为我需要 我需要类似的东西 var x Hello slot x 这就是我需要的 在一个具体的例子中 https jsfiddle net 2qdh3x3v https jsfiddle net 2
  • 在重复内容区域添加

    我有一个菜单组件 简单地说 它接受一个带有一系列选项的道具 并为每个选项在菜单中呈现一个项目 我希望能够根据用例自定义每个菜单项内的标记 因此我在菜单项元素内使用了占位符 你可以在这个中看到一个例子fiddle https jsfiddle
  • 如何在生产模式下为 Chrome 扩展启用 Vue 开发工具?

    我正在构建一个 chrome 扩展 并使用 vue cli webpack 配置 我希望能够在运行后使用 vue devtoolsnpm 运行构建命令 我尝试添加Vue config devtools true 在 main js 中 或者
  • 使用 R 将我的 shapefile 数据投影到传单地图上

    我 在 Win7 上 试图获取我的 shapefile 数据 Here https www dropbox com s f3d46itleoozzjz shapefiles zip dl 0是数据文件 要使用显示leaflet包裹 但没有任
  • 可排序不拖动 safari 中表格的所有列

    我有一个vue引导表 https bootstrap vue org docs components table使用 v 槽为每个单元使用自定义模板 所有这些单元格都是自定义组件 我希望该表的行可以排序 也就是说 我希望用户能够拖放该表中的
  • 在 Vue.js 中从父组件执行子方法

    目前 我有一个 Vue js 组件 其中包含其他组件的列表 我知道使用 vue 的常见方式是将数据传递给孩子 并从孩子向父母发出事件 但是 在这种情况下 我想在子组件中的按钮出现时执行子组件中的方法 parent被点击 哪种方法最好 一种建
  • 禁用引导列上的滚动

    我正在尝试禁用引导列上的滚动 这是我的代码 div class container fluid h 100 div class row h 100 div class col 4 h 100 bg dark fixed div div cl
  • 如何获取 vuejs 组件单元测试中定义的“this”变量

    我正在尝试在 npm 脚本中使用 mocha webpack 来测试 vuejs 组件 我在测试中像这样嘲笑 vuex 商店 const vm new Vue template div div
  • 在 vue.js 中访问数组对象属性

    给定以下数组vue js packageMaps Object packageMap 0 Object Id 16 PackageType flag list ProductCode F BannerBase packageMap 1 Ob

随机推荐

  • C2440 无法在 C++ WinApi 中将 LRESULT 转换为 WNDPROC

    我正在尝试使用 WinApi 编写这个 win32 程序 但我陷入了困境 因为我正在遵循的教程似乎有问题 主窗口 h class MainWindow public MainWindow HINSTANCE MainWindow void
  • 屏蔽掉c中不需要的位

    给定小数71744474在二进制中它是0100010001101011101111011010我试图从这个十进制中提取的是从低位开始的每七位 这七个位中的每一个都代表一个可打印的 ASCII 字符 该字符只能有 7 位 我总共拉出了四个角色
  • 如何为 PHPUnit 测试创建内存数据库?

    我是 PHPUnit 以及一般单元测试 的新手 我想要开发一个测试套件 开发人员可以在本地运行 但也可以在我们的集成系统 Codeship 中运行 我知道可以使用内存数据库 但似乎依赖于我们没有使用的迁移 似乎不能很好地处理视图 存储过程
  • 使用 Mono Touch 在循环中使用 CGImage.ScreenImage 时出现内存问题

    我正在尝试创建一个应用程序来使用 Monotouch 和 Zxing 的 C 端口读取 QR 码 但遇到了内存问题 当应用程序处理捕获的屏幕帧时 应用程序会收到内存警告 然后关闭 我删除了对 Zxing 的调用 以追踪内存问题的根源 并且只
  • 如何去除视频的绿色背景,使其透明?

    我有一个video https youtu be XfHJ57XIb4具有绿色背景 我想删除这个绿色部分 色度键 https wikipedia org wiki Chroma key 使其透明 然后将视频显示在网站背景上 我只能找到使用图
  • 文本颜色在 Material-UI 主题中不起作用

    使用 Material UI 创建颜色主题时 我将对比度文本设置为白色 fff 它适用于具有原色的按钮 但不适用于次要颜色 尝试了如下所述的覆盖 Material UI 无法更改主题中的按钮文本颜色 https stackoverflow
  • TOOLCHAIN_HOST_TASK 与 TOOLCHAIN_TARGET_TASK

    我很抱歉问了一个天真的问题 我无法理解这些 Yocto 变量之间的区别 手册说 TOOLCHAIN HOST TASK 列出构成主机部分的包 SDK 即在SDKMACHINE上运行的部分 当你使用bitbake时 c populate sd
  • 一个循环遍历多个 Lua 表

    是否可以使用同一个循环遍历多个 Lua 表 为了循环索引表 我可以这样做 local t1 a b c local t2 d e f local num t1 t2 for i 1 num do local j local val if i
  • 使用 jQuery 将 HTML 插入 iFrame Body 标记

    我正在使用托管 CMS 它在另一个 iFrame 中呈现一个 iFrame 这些 iFrame 是从同一域加载的 但由于这是托管 CMS 我无法直接访问这些 iFrame 是否可以使用 jQuery 将 HTML 内容插入到bodyiFra
  • 跳到一行并阅读它

    我必须处理大文件 许多 GB 并且需要快速查找以根据请求检索特定行 这个想法是维护一个映射 some key gt byte location 其中字节位置表示该行在文件中的起始位置 编辑 问题稍微改变了 首先我使用 FileInputSt
  • 在Delphi中加密/解密文本文件?

    您好 我想知道文本文件加密和解密的最佳加密技术 我的场景 我的软件有两种类型的用户 管理员和操作员 我们的要求是当管理员使用GUI输入数据并保存时加密文本文件 该加密文件将作为操作员的输入 他们只需选择它并使用该文件 当操作员选择这些文件时
  • 登录时自动运行 Bash 脚本

    我编写了一个脚本 它将登录者的日期和用户名发送到日志文件中 以记录登录者的记录 我想知道如何设置此脚本在用户登录时自动执行 而不是在用户登录时自动执行在终端中手动运行它 注意 用户名是当前登录的用户 my code bin bash pri
  • Xcode 可以在代码中使用“文件夹引用”吗?

    和许多人一样 我希望 Xcode 使用反映磁盘上文件夹结构的文件夹结构 但是 我无法将 文件夹引用 青色文件夹 中的代码显示在 编译源 下的项目目标中 有什么办法可以做到这一点吗 我什至设法将青色文件夹添加到 编译源 构建阶段 但这不会导致
  • 如何用 C++ 创建 OpenOffice 文档 [重复]

    这个问题在这里已经有答案了 可能的重复 从 C 创建 打开和打印 Word 文件 https stackoverflow com questions 145573 creating opening and printing a word f
  • 捕获 pygraphviz 图像渲染而不保存到文件?

    pygraphviz 是否允许您将图像渲染到变量 我想通过网页提供动态图像 而无需将图形渲染到磁盘 根据到源代码 https github com pygraphviz pygraphviz blob 1f7f314530080c152a4
  • 从Python中的国家/地区代码获取电话号码的国际前缀

    是否可以使用python 电话号码 https github com daviddrysdale python phonenumbers或另一个 python 库 用于从两个字母的国家 地区代码中获取国家 地区调用代码 ISO 3166 1
  • Windows 本地应用程序引擎用法:oauth2client ImportError

    我正在使用 App Engine Standard 开发 Python 后端服务 在某个时候 我告诉自己 嘿 为什么不尝试在使用远程数据存储时在本地运行服务器 我可以在本地运行此代码 但我无法弄清楚为什么 remote api stub 会
  • jquery密集文本阴影和模糊背景颜色

    我正在寻找一种方法 演示来制作额外密集的厚文本阴影jquery 像 jquery 一样跨浏览器兼容 这可能简单的CSS不可能实现 具有 IE 支持 不过 多个阴影遮盖了它一点 但问题是我认为旧的浏览器兼容性问题 jQuery 涵盖了它 这就
  • 贝尔曼-福特算法的正确性,我们还能做得更好吗?

    我了解到贝尔曼 福特算法的运行时间为O E V 其中E是边数 V是顶点数 假设该图没有任何负加权循环 我的第一个问题是 我们如何证明在 V 1 次迭代 每次迭代检查 E 中的每条边 内 给定特定的起始节点 它更新到每个可能节点的最短路径 有
  • Vue2-传单地图在 BoostrapVue 模式中无法正确显示

    这是我的问题 Vue2 传单地图无法在 BootstrapVue 模式中正确渲染 这是它的视觉效果 它应该只显示海洋