解决百度地图的父元素出现滚轮之后启用鼠标缩放模式之后出现偏移的现象

这篇具有很好参考价值的文章主要介绍了解决百度地图的父元素出现滚轮之后启用鼠标缩放模式之后出现偏移的现象。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

最近在做项目的时候,有个功能是点击详情按钮的时候在一个弹框里展现出来列表的详情

因为详情弹框里面的数据有其他的表格数据,然后在弹框的下边使用百度地图展示后端发送过来的坐标点,然后把坐标点转换之后使用百度地图的方法制作覆盖物上去。这里边就出现了一个问题是:

百度地图的父元素如果高度超过的了body并且出现了滚动条的情况,使用百度地图的鼠标滚轮缩放功能是会发生偏移的,这个我在网上看了很多文章发现大多说的都是解决的话要么更换地图。

要么把百度地图放在body的可是区域内,也就是说我可以把百度地图放在弹框的上边,注意刚开始时,我说的是把百度地图放在了弹框的下边并且上边有其他的展示信息,经过我一下午的倒腾终于发现他的这种偏移量是可以解决的:

百度地图缩放位置偏了,百度地图,计算机外设,vue,大屏端

可以看到此时我们的地图处于弹框的下半部分,在百度地图的父元素出现滚动条之后你向下滚动滚动条之后 ,此时鼠标在放在百度地图上就会发现鼠标缩放不会在鼠标的中心点,是会发生向上的偏移解决办法就是我们要首先去监听这个滑轮滚动的事件

  mounted() {//首先这里我在mounted函数里监听了滚轮滑动
        window.addEventListener("scroll", this.handleScroll, true);
    },
  methods: {
        handleScroll() {
            let top = Math.floor(document.body.scrollTop || document.documentElement.scrollTop);
            console.log(top);//这里获取到滚轮body的高度位置
        }
    }

这里要写监听你百度地图的父元素的滚动条高度位置,而不是body,要书写的话我们用其他的获取dom的方式比如:

  let classBox = document.getElementsByClassName('*****')

  let box = classBox[0]

 let idDiv = document.getElementById('****')

用类名或者id获取dom的方式来获取你出现滚动条的父元素的滚动条位置高度

 handleScroll() {
        let ant = document.getElementsByClassName('ant-modal-wrap')
        let box = ant[0]
        let tope = Math.floor(box.scrollTop);

        //为了修正百度地图的父元素出现滚轮之后地图出现的偏差
        let mapDiv = document.getElementById('container')
        mapDiv.style.transform = 'translateY(' + tope + 'px' + ')';
        mapDiv.style.position = 'absolute';
        mapDiv.style.top = '-' + tope + 'px';

    },

这里我使用的class来获取dom元素之后用的scrollTop 这样就监听到了滚轮条的位置,之后在获取到百度地图的dom在使用定位移动的方法就可以恢复了

这样的原因是因为百度地图的缩放是基于body层的,如果body层有滚动条,并且不在最顶端,在当前位置插入了百度地图,也就是出现该问题时的状态,这个时候滚轮缩放就会产生偏移。

所以结果是这样的:

<template>
<a-modal>//modal弹框 要确定map的父元素相对定位
    <div style="position: relative;height: 300px;width: 100%;">
       <div id="container" class="map_scale" style="width: 100%;height: 100%;"></div>
    </div>
</a-modal>
</template>


<script>
mounted() {
        window.addEventListener("scroll", this.handleScroll, true)
    },
    methods: {
        handleScroll() {
            let ant = document.getElementsByClassName('ant-modal-wrap')
            let box = ant[0]
            let tope = Math.floor(box.scrollTop);

            let mapDiv = document.getElementById('container')
            mapDiv.style.transform = 'translateY(' + tope + 'px' + ')';
            mapDiv.style.position = 'absolute';
            mapDiv.style.top = '-' + tope + 'px';
        },
    }
</script>

写的不对的话请大家指出来,因为我也不知道其他的好的解决办法如果有的话在学习学习文章来源地址https://www.toymoban.com/news/detail-841199.html

到了这里,关于解决百度地图的父元素出现滚轮之后启用鼠标缩放模式之后出现偏移的现象的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包