Echarts的地图实现拖拽缩放同步功能(解决多层geo缩放、拖动卡顿问题)

项目场景:

大屏项目显示云南省3D的地图,可拖拽缩放、地图打点、点击图标弹框等等功能


 

问题描述

多图层拖拽时会上下层会分离,延迟卡顿


原因分析:

1、拖拽时不同图层的中心坐标没有保持一致,

2、卡顿是数据更新动画时长过长。


解决方案:

1、监听捕捉图层的roam事件,使下层的图层和上层的图层中心坐标保持一致

2、添加减少延迟的属性animationDurationUpdate:0

核心代码部分:

animationDurationUpdate:0,//实现缩放、拖动同步且不卡顿
roam: true,//是否开启鼠标缩放和平移漫游。默认不开启。如果只想要开启缩放或者平移,可以设置成 'scale' 或者 'move'。设置成 true 为都开启

 

//捕捉geo roam事件,使下层的geo随着上层的geo一起实现缩放拖曳
    chartController.current.on('georoam',(params:any)=>{
      const option = chartController.current.getOption();//获得option对象
      if(params.zoom != null){ //捕捉到缩放时
        option.geo[0].zoom=option.series[0].zoom;//下层geo的缩放等级跟着上层的geo一起改变
        option.geo[0].center=option.series[0].center;//下层的geo的中心位置随着上层geo一起改变
      }else{//捕捉到拖曳时
        option.geo[0].center=option.series[0].center;//下层的geo的中心位置随着上层geo一起改变
      }
      chartController.current.setOption(option);//设置option
    })

 画框的这两块代码就是核心部分了。完整案例代码:详见https://download.csdn.net/download/qq_35624642/87905189

参考文献:

0、Documentation - Apache ECharts

1、Echarts多层geo实现缩放、拖动同步且不卡顿!!和不同窗口尺寸始终保持立体效果_echarts同步缩放怎么做_就深咖啡色的博客-CSDN博客

2、echarts 设置地图外边框以及多个geo实现缩放拖曳同步_echarts地图外轮廓描边_铃兰丶物语的博客-CSDN博客 

  • 5
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论
在使用 Echarts 地图时,要实现地图缩放同步点坐标的功能,可以通过以下几个步骤来实现。 1. 获取地图缩放级别和中心点坐标。 通过Echarts提供的API,可以获取到当前地图缩放级别和中心点坐标。例如: ```javascript var zoom = myChart.getOption().geo[0].zoom; // 获取当前地图缩放级别 var center = myChart.getOption().geo[0].center; // 获取当前地图的中心点坐标 ``` 2. 根据缩放级别和中心点坐标,计算点在缩放后的坐标。 根据地图缩放级别和中心点坐标,可以得出一个比例尺,然后将点的经纬度乘以该比例尺,就可以得到点在缩放后的坐标。例如: ```javascript var scale = Math.pow(2, zoom); // 计算比例尺 var scaledX = center[0] + (x - center[0]) / scale; // 计算点在缩放后的X坐标 var scaledY = center[1] + (y - center[1]) / scale; // 计算点在缩放后的Y坐标 ``` 3. 更新点的坐标数据。 根据上一步计算得到的点在缩放后的坐标,将该坐标更新到点的数据中。例如: ```javascript var option = myChart.getOption(); option.series[0].data[0].coord = [scaledX, scaledY]; // 更新点的坐标数据 myChart.setOption(option); // 更新地图 ``` 通过以上步骤,就可以实现地图缩放时点坐标的同步。在地图缩放拖动时,获取当前的缩放级别和中心点坐标,然后根据这些信息计算点在缩放后的坐标,并更新到点的数据中,从而实现点坐标的同步

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

QC班长

班长有话说:要是有瓶水喝就好了

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值