zoukankan      html  css  js  c++  java
  • Odoo 百度地图的bug

    在给百度地图模块添砖加瓦的时候,碰到一个问题,就是鼠标选取的坐标与实际的坐标存在误差,如下图所示:

     

    不论我怎么调整百度地图的参数,这个偏差一直存在。

    后来经过google,发现了其他人也有类似的情况出现,其原因在于百度地图的缩放是基于body层的,如果body层有滚动条,并且不在最顶端,在当前位置插入了百度地图,也就是出现该问题时的状态,这个时候滚轮缩放就会产生偏移。

    知道了问题的原因,就好处理,既然存在这个偏差,那么我们在加载marker的时候把这个偏差去掉应该就可以了。

    map.addEventListener('click', function (e) {
        // 百度地图以滚动条开始位置做为起点,导致鼠标和marker距离有偏差
        var offset = $('.o_content').scrollTop();
        var newpixel = new BMapGL.Pixel(e.pixel.x, e.pixel.y + offset);
        var newpoint = map.pixelToPoint(newpixel);
        //清除地图上所有的覆盖物
        map.clearOverlays();
        var marker = new BMapGL.Marker(newpoint);
        map.addOverlay(marker);
    })

    odoo的form表单的滚动条是在.o_content样式的div元素中产生的,因此我们计算出这个偏差值,然后把计算后的结果重新加载到地图中正确的位置就可以了。

    处理后的效果:

     

  • 相关阅读:
    散列
    AVL树的单旋与双旋
    Ubuntu系统目录
    os x文件系统结构简介
    c语言静态局部变量
    创建J2EE 5.0工程后,JSTL不能使用解决方法
    mysql
    指针
    servlet 访问项目
    c数组
  • 原文地址:https://www.cnblogs.com/kfx2007/p/14789609.html
Copyright © 2011-2022 走看看