Vue百度地图center偏移问题

最近在vue项目中用到了百度地图,UI是在tab切换到“地图”时显示地图。但是遇到了地图显示时,设定的center偏移到了视图的左上角。

在搜索了问题之后,找到了原因:

因为最开始包含地图的DIV是隐藏的状态,所以该DIV的宽高都为0,故中心也是(0, 0)。所以当包含地图的DIV由隐藏变为显示状态时,中心会出现在左上角。

当然也告诉了解决办法:延迟加载。

但由于本人使用的是vue百度地图组件,代码跟网上的解决方式有所不同,所以就自己写了一份。

HTML

<el-tab-pane label="地图">
   <div v-if="!show" style="width: 100%;height: 500px" v-loading="!show"></div>
   <div>
       <baidu-map v-if="show" style="width: 100%;height: 500px"
                  :center="center" :zoom="zoom" :scroll-wheel-zoom="true">
          <bm-navigation anchor="BMAP_ANCHOR_TOP_RIGHT"></bm-navigation>
          <bm-scale anchor="BMAP_ANCHOR_BOTTOM_LEFT"></bm-scale>
       </baidu-map>
    </div>
</el-tab-pane>

VUE

const debounce = (function() {
    let timer = 0;
    return function(func, delay) {
      clearTimeout(timer);
      timer = setTimeout(func, delay);
    };
  })();
tabClick(tab) {
  if (tab.label === '地图') {
     debounce(() => {
       this.center.lng = 120.724958;
       this.center.lat = 30.758484;
       this.zoom = 15
       this.show = true;
     }, 800);
  }
},

tabClick是Tab组件切换时的点击事件。
至于为什么要用一个空的div来切换地图视图的div,主要是在过程中发现延迟加载的时候会导致地图视图黑屏。另为了美观,使用了v-loading。

本人前端新手,该方案应该不是最优解。

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 基于Vue的一些资料 内容 UI组件 开发框架 实用库 服务端 辅助工具 应用实例 Demo示例 element★...
    尝了又尝阅读 4,892评论 0 1
  • UI组件 element- 饿了么出品的Vue2的web UI工具套件 Vux- 基于Vue和WeUI的组件库 m...
    你猜_3214阅读 13,840评论 0 118
  • UI组件 element- 饿了么出品的Vue2的web UI工具套件 Vux- 基于Vue和WeUI的组件库 m...
    王喂马_阅读 11,534评论 1 77
  • UI组件 element- 饿了么出品的Vue2的web UI工具套件 Vux- 基于Vue和WeUI的组件库 m...
    柴东啊阅读 15,919评论 2 140
  • 文/逗逗 图/摄图网 寒冬来袭,不来点火锅暖暖身子,总觉得好像亏欠了自己的胃,“围炉聚炊欢呼处,百味消融小釜中”...
    遇见逗逗阅读 4,075评论 2 3

友情链接更多精彩内容