当前位置: 首页 > news >正文

大屏页面使用transform属性scale进行缩放,高德地图点击事件失效,地图展示模糊

这里写自定义目录标题

  • 大屏页面使用transform属性scale进行缩放,高德地图点击事件失效,地图展示模糊
    • 1、大屏缩放自适应时使用tansform scale 缩放
        • 1.1、window.resize 监听浏览器变化,动态获取要缩放的比例(宽高),新建文件 resetwh.js 然后引入即可
    • 2、高德地图在缩放的页面中,点击事件失效
          • 2.1 方法一:通过iframe 嵌套地图页面 或者组件(这里不做赘述)
          • 2.2 方式二:通过缩放将地图容器缩放回原来的尺寸

大屏页面使用transform属性scale进行缩放,高德地图点击事件失效,地图展示模糊

1、大屏缩放自适应时使用tansform scale 缩放

1.1、window.resize 监听浏览器变化,动态获取要缩放的比例(宽高),新建文件 resetwh.js 然后引入即可

window.onresize = function () {
    fnResize();
}
// 自执行一次,初始化
fnResize();
setTimeout(() => {
    fnResize();
}, 200)

function fnResize() {
    let screenWidth = document.body.clientWidth || document.documentElement.clientWidth;
    let screenHeight = document.body.clientHeight || document.documentElement.clientHeight;
    let defWidth = 1920;
    let defHeight = 1080;
    let xScale = screenWidth / defWidth;
    let yScale = screenHeight / defHeight;
    var style1 = document.createElement('style');
    style1.innerHTML = '#page{transform: scale(' + xScale + ',' + yScale + ')}';
    document.head.appendChild(style1);
	// rem 的根字体大小,不用可删除
    document.documentElement.style.fontSize = '100px';
}

2、高德地图在缩放的页面中,点击事件失效

2.1 方法一:通过iframe 嵌套地图页面 或者组件(这里不做赘述)
2.2 方式二:通过缩放将地图容器缩放回原来的尺寸

思路:既然是缩放导致位置发生错位,导致点击的点不在地图的真实点位上,那么我们可以将地图的容器,再通过计算给缩放回来不就可以了吗?
代码:首先监听浏览器窗口变化,注意这里不能在使用 window.onresize了,不然会覆盖1中的监听事件

window.addEventListener('resize',this.resetMapSize)

能监听到,那么我们就获取容器,根据页面的缩放比,把地图的容器还原回去,也就是 宽高比时原来的 1:1

// fnResize 方法和1中一样,只是获取当前缩放的比例 xScale, yScale
 resetMapSize() {
      let scaleWH = fnResize();
      let mapContent = document.getElementById("monitor-map");
      mapContent.style.transform = `scale(${1 / scaleWH.xScale},${
        1 / scaleWH.yScale
      })`
    }
// 用完后记得销毁监听事件 比如 vue 中
destroyed () {
    window.removeEventListener('resize',this.resetMapSize)
  }

个人推荐方法二,方法一iframe 要是有数据流转、交货等,通信相比而言比较麻烦。

相关文章:

  • Docker圣经:大白话说Docker底层原理,6W字实现Docker自由
  • css实现炫酷充电动画
  • hadoop理论基础(一)
  • FPGA之时钟规划图解
  • python 绘图时出现报错:A colormap named “BlueWhiteOrangeRed“ is already registered.
  • 安卓手机也可以使用新必应NewBing
  • C++并发编程之三 并发操作的同步
  • 不好!有敌情,遭到XSS攻击【网络安全篇】
  • yolov5 剪枝、蒸馏、压缩、量化
  • 断崖式难度的春招,可以get这些点
  • MySQL数据库的基础语法总结(1)
  • leetcode 15. 三数之和
  • SSL、TLS应用笔记
  • 学生信息表
  • 三天吃透计算机网络面试八股文
  • 【翻译】babel对TC39装饰器草案的实现
  • Android优雅地处理按钮重复点击
  • canvas 五子棋游戏
  • ES6简单总结(搭配简单的讲解和小案例)
  • es6要点
  • hadoop入门学习教程--DKHadoop完整安装步骤
  • Hibernate【inverse和cascade属性】知识要点
  • MySQL几个简单SQL的优化
  • NSTimer学习笔记
  • PAT A1017 优先队列
  • pdf文件如何在线转换为jpg图片
  • Stream流与Lambda表达式(三) 静态工厂类Collectors
  • Vue 动态创建 component
  • Vue组件定义
  • ------- 计算机网络基础
  • 警报:线上事故之CountDownLatch的威力
  • 利用DataURL技术在网页上显示图片
  • 爬虫进阶 -- 神级程序员:让你的爬虫就像人类的用户行为!
  • 函数计算新功能-----支持C#函数
  • ​2021半年盘点,不想你错过的重磅新书
  • (20050108)又读《平凡的世界》
  • (附源码)springboot掌上博客系统 毕业设计063131
  • (三)Hyperledger Fabric 1.1安装部署-chaincode测试
  • (一)使用IDEA创建Maven项目和Maven使用入门(配图详解)
  • (原創) 如何優化ThinkPad X61開機速度? (NB) (ThinkPad) (X61) (OS) (Windows)
  • (转)shell中括号的特殊用法 linux if多条件判断
  • (转)淘淘商城系列——使用Spring来管理Redis单机版和集群版
  • ***linux下安装xampp,XAMPP目录结构(阿里云安装xampp)
  • .Mobi域名介绍
  • .net core 客户端缓存、服务器端响应缓存、服务器内存缓存
  • .Net Redis的秒杀Dome和异步执行
  • .net 简单实现MD5
  • .NET 中什么样的类是可使用 await 异步等待的?
  • .net获取当前url各种属性(文件名、参数、域名 等)的方法
  • .xml 下拉列表_RecyclerView嵌套recyclerview实现二级下拉列表,包含自定义IOS对话框...
  • :“Failed to access IIS metabase”解决方法
  • [20181219]script使用小技巧.txt
  • [DevOps云实践] 彻底删除AWS云资源
  • [html] 动态炫彩渐变背景
  • [LeetCode][138]【学习日记】深拷贝带有随机指针的链表