vue中mapbox地图显示一半的问题及解决方法

 更新时间:2023年07月06日 15:20:49   作者:Sheyueyu  
在vue中创建mapbox地图,地图只显示一般,查看浏览器开发者工具,发现将canvas.mapboxgl-canvas 的position:absolute去掉就解决了,今天小编通过本文给大家分享详细过程,感兴趣的朋友跟随小编一起看看吧

解决vue中mapbox地图显示一半的问题

问题描述: 在vue中创建mapbox地图,地图只显示一般,查看浏览器开发者工具。发现将canvas.mapboxgl-canvasposition:absolute去掉就解决了 。

代码修改:获取到canvas.mapboxgl-canvas,并修改其position样式就ok

修改前代码:

修改后

添加

this.map.on("load", () => {
    // Wait for map to load before modifying styles
    const canvas = this.$refs.mapContainer.querySelector('.mapboxgl-canvas');
    canvas.style.position = 'relative';
});

完整代码:

<template>
    <main>
        <p>Center :{{center}}</p>
        <p>Zoom : {{ zoom }}</p>
        <div id="map" class="map-container" ref="mapContainer">
        </div>
    </main>
  </template>
<script>
import mapboxGl from "mapbox-gl";
export default {
    name:"MapMapbox",
    data(){
        return {
            center:[-93.1247, 44.9323],
            zoom:10.5
        }
    },
    mounted() {
    mapboxGl.accessToken = "your_mapbox_token";
    this.createMap();
    console.log(this.map)
},
    methods: {
        createMap() {
            this.map = new mapboxGl.Map({
                container: "map",
                style: "mapbox://styles/mapbox/streets-v9",
                minzoom: 5,
                center: this.center,
                zoom: this.zoom,
                hash: true
            });
            this.map.on("load", () => {
                // Wait for map to load before modifying styles
                const canvas = this.$refs.mapContainer.querySelector('.mapboxgl-canvas');
                canvas.style.position = 'relative';
            });
            this.map.on("move", () => {
                this.center = this.map.getCenter();
            });
            this.map.on("zoom", () => {
                this.zoom = this.map.getZoom();
            });
        }
    },
    beforeDestroy() {
    if (this.map) {
        this.map.remove();
    }
}
}
</script>
<style scoped>
.map-container {
  height: 500px;
  width: 100%;
}
</style>

到此这篇关于解决vue中mapbox地图显示一半的问题的文章就介绍到这了,更多相关vue中mapbox地图显示一半内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Vue之文件加载执行全流程

    Vue之文件加载执行全流程

    这篇文章主要介绍了Vue之文件加载执行全流程,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-04-04
  • Vue2实现全局水印效果的示例代码

    Vue2实现全局水印效果的示例代码

    这篇文章主要为大家学习介绍了如何利用Vue2实现全局水印的效果,文中的示例代码简洁易懂,具有一定的借鉴价值,感兴趣的小伙伴可以了解下
    2023-07-07
  • vue Router(v3.x) 路由传参的三种方式场景分析

    vue Router(v3.x) 路由传参的三种方式场景分析

    vue 路由传参的使用场景一般都是应用在父路由跳转到子路由时,携带参数跳转,传参方式可划分为 params 传参和 query 传参,而 params 传参又可分为在 url 中显示参数和不显示参数两种方式,这就是vue路由传参的三种方式,感兴趣的朋友跟随小编一起看看吧
    2023-07-07
  • 解读vant的Uploader上传问题

    解读vant的Uploader上传问题

    这篇文章主要介绍了解读vant的Uploader上传问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-10-10
  • Vue导出excel的两个常用方式介绍与对比

    Vue导出excel的两个常用方式介绍与对比

    这篇文章主要为大家详细介绍了Vue导出excel的两个常用方式,分别为前端vue+XLSX导出excel和vue+后端POI 导出excel,感兴趣的小伙伴可以了解下
    2025-01-01
  • Vue源码分析之Vue实例初始化详解

    Vue源码分析之Vue实例初始化详解

    这篇文章主要给大家介绍了关于Vue源码分析之Vue实例初始化的相关资料,需要的朋友可以参考下
    2019-08-08
  • vite项目如何集成eslint和prettier

    vite项目如何集成eslint和prettier

    这篇文章主要介绍了vite项目如何集成eslint和prettier问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-01-01
  • vue3获取url地址参数的示例详解

    vue3获取url地址参数的示例详解

    这篇文章主要介绍了vue3获取url地址参数,Vue3 获取地址栏参数有两个方式:查询参数和路径参数,文中结合示例代码给大家详细讲解,需要的朋友可以参考下
    2023-04-04
  • Vue无限滑动周选择日期的组件的示例代码

    Vue无限滑动周选择日期的组件的示例代码

    这篇文章主要介绍了Vue无限滑动周选择日期的组件的示例代码,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-07-07
  • vue项目启动命令个人学习记录

    vue项目启动命令个人学习记录

    最近想要学习vue,正好看到资料,如何通过命令创建vue项目的方法,就留个笔记,下面这篇文章主要给大家介绍了关于vue项目启动命令的相关资料,需要的朋友可以参考下
    2023-02-02

最新评论