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 模式中无法正确显示 的相关文章

随机推荐

  • 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 模式中正确渲染 这是它的视觉效果 它应该只显示海洋