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

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

在使用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}
相关文章
|
Linux 开发工具
百度搜索:蓝易云【Linux系统时间同步方法。】
在Linux系统中,时间同步是非常重要的,它能确保服务器和其他设备之间的时间一致性,从而避免出现时间戳错误的问题。
128 0
|
3月前
|
语音技术 开发工具 图形学
Unity与IOS⭐一、百度语音IOS版Demo调试方法
Unity与IOS⭐一、百度语音IOS版Demo调试方法
|
6月前
|
Ubuntu Shell 数据安全/隐私保护
百度搜索:蓝易云【Ubuntu密码忘记怎么办 Ubuntu重置root密码方法】
完成上述步骤后,Ubuntu系统的root密码应该已经被成功重置为你设置的新密码。请确保在重置密码后牢记新密码。
127 0
|
5月前
|
搜索推荐 定位技术 UED
网站如何被百度快速收录?除了提交还有哪些方法?
常规更新:定期更新您的网站内容,这可以让搜索引擎更频繁地访问您的网站,从而加快被百度收录的速度。 网站速度:优化您的网站速度,确保它在百度搜索引擎中的加载速度较快,这可以提高您的网站的用户体验和搜索引擎的排名,也有助于快速被百度收录。 总之,如果您想快速被百度收录,您需要遵循最佳实践,包括优化您的内容、外部链接、社交媒体、站长平台、网站地图、常规更新和网站速度。
109 0
|
6月前
|
Linux
百度搜索:蓝易云【Linux系统下获取系统、BIOS、进程、网络等相关信息的方法和工具。】
综上所述,通过使用命令行工具和图形化工具,可以在Linux系统下获取系统、BIOS、进程和网络等相关信息。根据具体的需求和使用场景,选择合适的工具和命令可以帮助你更好地了解和管理Linux系统。
100 2
|
6月前
|
Linux
百度搜索:蓝易云【Linux清空日志的五种方法】
这些是在Linux中清空日志文件的五种常用方法。根据您的具体需求和环境,可以选择适合您的方法进行日志清空操作。请注意,清空日志文件可能会导致丢失日志数据,因此在清空之前请确保已备份重要的日志信息。
63 0
|
6月前
|
Linux
百度搜索:蓝易云【Linux系统中查看硬盘信息的方法有哪些?】
这些是在Linux系统中查看硬盘信息的常见方法。根据您的需求和具体环境,您可以选择适合您的方法来查看硬盘信息。
110 0
|
6月前
|
缓存 Linux
百度搜索:蓝易云【Linux系统中查看CPU信息的方法有哪些?】
这些是在Linux系统中查看CPU信息的常见方法。根据您的需求和具体环境,您可以选择适合您的方法来查看CPU信息。
80 0
|
6月前
|
缓存 Linux
百度搜索:蓝易云【Linux系统中查看内存信息的方法有哪些?】
这些是在Linux系统中查看内存信息的常见方法。根据您的需求和具体环境,您可以选择适合您的方法来查看内存信息。
108 0
|
6月前
|
Java
Java【付诸实践 04】Jar包class文件反编译、修改、重新编译打包方法(含反编译工具jd-gui-windows-1.6.6.zip百度云资源)
Java【付诸实践 04】Jar包class文件反编译、修改、重新编译打包方法(含反编译工具jd-gui-windows-1.6.6.zip百度云资源)
730 0