Echarts结合百度地图绘制散点图,toolpit显示位置错位偏移问题解决

Echarts结合百度地图绘制散点图,toolpit显示位置错位偏移问题解决

在使用echarts结合百度地图绘制散点图的时候,会配置toolpit参数来显示鼠标知识散点的基本信息。当地图在不拖动的情况下提示框显示位置是正确的。但是当拖动并放大地图后,提示框显示位置就会发生偏移,甚至超出图形区域显示,对用户体验造成影响。如下:

tooplit显示位置偏移

在配置中配置toolpit参数:

tooltip: {
    trigger: 'item',
    confine:true,
    position: function(point, params, dom) { 
        return [0,0];    //设置固定值 都会偏移,不设置则跟随鼠标。还是不行
    }
},
 
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

配置alwaysShowContent :true,将提示框一直显示在页面,通过控制台查看,发现提示框其实就是一个div。其中样式 position控制他为相对定位,left和top会在地图拖动时更改。
这里写图片描述

解决思路

  • 自定义一个div,用来模拟toolpit提示框
  • 根据position: function(point, params, dom) 配置来设置自定义div的位置和内容

其中point为鼠标位置。dom就是toolpit的显示div。

本编辑器支持 Markdown Extra ,  扩展了很多好用的功能。具体请参考[Github][2].

1.HTML代码

在echarts dom上新增一个div,用来自定义模拟toolpit的提示框:

<div id="mapStoreClass" stytle="position: absolute;z-index: 9999;"></div>
<div id="chinaMap" style="text-align: left;width:100%;height:500px"></div>
 
 
  • 1
  • 2

2.js配置

其他配置省略。

tooltip: {
    trigger: 'item',
     confine:true,
    position: function(point, params, dom) { 
        var width = $(dom).width();     //获取tooltip原来的width
        var m = $("#mapStoreClass");    //获取我们自定义模拟的tooltip dom
        $(dom).css("position","initial");    //将原来的tooltip设置为initial *重要,为了不让原来的tooltip dom乱跑
        $(m).html(dom);                      //将更改好的dom放入我们模拟的tooltip dom
        $(m).css("left",point[0]+20);        //设置模拟dom显示位置,此为鼠标位置
        $(m).css("top",point[1]+20);         //设置模拟dom显示位置,此为鼠标位置
        $(m).css("width",width+15);          //设置模拟dom宽度
        //不用return 在此我们只是用来获取我们想要的point和dom,并不更改原来的位置,因为改了也没用,不然我就不用这么麻烦了。。
    }
 
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13

结果

可以实现一模一样的效果,并且不会发生偏移等。
这里写图片描述

原文地址:https://blog.csdn.net/github_36086968/article/details/79003601
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值