百度地图元素宽度自适应的方法

简介: 百度地图元素宽度自适应的方法

在使用Vue框架搭建网站时,其中有一网页用于展示坐标点,使用Vue Baidu Map进行数据的绑定,地图初始时,宽度必须要设定,否则无法完成地图渲染。在<baidu-map>标签中设置style属性值如下:


<div id="map">
<baidu-map :style="{width:map.width,height:map.height}" />
</div>

在地图初始函数handler中设置地图的初始值,


this.map.width = document.getElementById("map").clientWidth +'px';
this.map.height = document.getElementById("map").clientHeight +'px';

当点击折叠菜单按钮时,通过获取元素map的宽度来刷新地图的宽度。但是尝试几个方法来设置都失败,最终将子元素宽度设置为100%后,地图宽度得以屏幕自适应,仰天一叹 😦 :吃了没有详细看CSS的亏。


首先看一下我都尝试了哪些操作。


一、计算方法


1.1 监听折叠按钮的变化,获取map的值


  collapsed: function (val){
      console.log('current map width', document.getElementById("map").clientWidth);
      this.bigWidth = 1051 +'px';
      if(val){
        this.smallWidth = document.getElementById("map").clientWidth +'px';
      }else{
        this.bigWidth = document.getElementById("map").clientWidth +'px';
      }
      if(val){
        this.map.width = this.bigWidth;
      }else{
        this.map.width = this.smallWidth;
      }
    },

结论:当监听到折叠按钮变化时,直接获取的是未进行更新的DOM元素的值,因此我还设置了宽度值,因为第一次获取的时候是undefined。


1.2 监听map元素的resize变化,更新地图的宽度


import elementResizeDetectorMaker from "element-resize-detector";//导入该库
let that = this;
let elements = [];
elements.push(document.getElementById("map"));
elementResizeDetectorMaker().listenTo(elements,() => {
  that.map.width = document.getElementById("map").clientWidth;
  console.log(that.map.width);
});

结论:虽然能够取到折叠后的宽度,但是设置不生效,原因未知(估摸着是浏览器渲染问题,待深入研究其机理再分析,本文先提供几个试错的样本,避免再走弯路)。


1.3 延时更新map元素宽度


let  that = this;
setTimeout(()=>{
  that.map.width =  document.getElementById("map").clientWidth;
  console.log('setTimeout',that.map.width);
},1200);

结论:同1.2。


二、极简方法


通过style属性,将子元素宽度设置为100%。

:style="{width:'100%',height:map.height}
相关文章
|
数据可视化 搜索推荐 JavaScript
数据可视化大屏百度地图区域掩膜MapMask实现地图指定区域非省市县行政区显示的实战案例解析(JavaScript API GL、个性化地图定制、指定区域经纬度拾取转化)
数据可视化大屏百度地图区域掩膜MapMask实现地图指定区域非省市县行政区显示的实战案例解析(JavaScript API GL、个性化地图定制、指定区域经纬度拾取转化)
1560 0
|
存储 关系型数据库 MySQL
Nacos 配置数据持久化
Nacos 不仅仅可以作为注册中,还带有配置中心的功能。Nacos 配置默认存储在内存中,对于一些项目往往配置项有成百上千个这些都是非常重要的。在这个场景下我们可以将配置保存到 MySQL 中。来持久化我们的配置,保证 Nacos 重新启动或者服务节点挂掉后配置不会丢失。 环境介绍:nacos-server-1.4.2
1640 0
Nacos 配置数据持久化
|
存储 Java API
Java实现导出多个excel表打包到zip文件中,供客户端另存为窗口下载
Java实现导出多个excel表打包到zip文件中,供客户端另存为窗口下载
920 4
|
缓存 资源调度 前端开发
Yarn学习,Yarn安装,Yarn常用命令。这一篇即可(有需要再补充)
Yarn 是一个快速、可靠、安全的 JavaScript 包管理工具,旨在解决 npm 的一些不足之处。
2317 5
阿里云app备案服务号在哪看
【10月更文挑战第11天】阿里云app备案服务号在哪看
567 1
|
JSON JavaScript 定位技术
Echarts 绘制地图(中国、省市、区县),保姆级教程!
Echarts 绘制地图(中国、省市、区县),保姆级教程!
|
运维 Kubernetes Docker
Kubernetes 1.24 1.25 集群使用docker作为容器
在新版本Kubernetes环境(1.24以及以上版本)下官方不在支持docker作为容器运行时了,若要继续使用docker 需要对docker进行配置一番。需要安装cri-docker作为Kubernetes容器
2872 2
|
JavaScript
【vue3】vue3中路由hash与History的设置
【vue3】vue3中路由hash与History的设置
618 0
|
XML 安全 数据安全/隐私保护
探索 SOAP:揭开 Web 服务的神秘面纱(下)
探索 SOAP:揭开 Web 服务的神秘面纱(下)
|
Web App开发 JavaScript 前端开发
https 页面中引入 http 资源的解决方式
https 页面中引入 http 资源的解决方式
2981 0