当前位置:   article > 正文

echarts 3d地图 实现多个geo层缩放拖拽同步且不卡顿_echaers地图多个geo开启roam

echaers地图多个geo开启roam

效果:

 主要代码:

原理:监听捕获放大缩小动作,设置下层geo的zoom,center为顶层的zoom,center。

标记点大小是计算放大缩小倍数,重设值图标大小。

注意:最后所有层记得加上 animationDurationUpdate:0, 不然会有同步延迟和卡顿

  1. myChart.on("georoam", function(params) {
  2. var option = myChart.getOption(); //获得option对象
  3. if (params.zoom != null && params.zoom != undefined) {
  4. //捕捉到缩放时
  5. let mo = option.geo[0].zoom
  6. option.geo[0].zoom = option.series[0].zoom; //下层geo的缩放等级跟着上层的geo一起改变
  7. option.geo[0].center = option.series[0].center; //下层的geo的中心位置随着上层geo一起改变
  8. // 改变标记点随地图放大缩小
  9. // console.log(option.series)
  10. let size = option.series[0].zoom/mo
  11. if(option.series[0].zoom>mo){
  12. // console.log(option.series)
  13. option.series[2].symbolSize = [option.series[2].symbolSize[0]*size,option.series[2].symbolSize[1]*size]
  14. option.series[1].symbolSize=option.series[1].symbolSize*size
  15. option.series[1].label.fontSize=option.series[1].label.fontSize*size
  16. }else{
  17. option.series[2].symbolSize = [option.series[2].symbolSize[0]*size,option.series[2].symbolSize[1]*size]
  18. option.series[1].symbolSize = option.series[1].symbolSize*size
  19. option.series[1].label.fontSize = option.series[1].label.fontSize*size
  20. }
  21. // 改变标记点end
  22. } else {
  23. //捕捉到拖曳时
  24. option.geo[0].center = option.series[0].center; //下层的geo的中心位置随着上层geo一起改变
  25. }
  26. // myChart.dispatchAction({ //来用程序主动渲染选框
  27. // type: "restore",
  28. // });
  29. myChart.setOption(option); //设置option
  30. });

animationDurationUpdate:0, //数据更新动画的时长。

 主要是记录下,所以这里就只放了比较关键的代码段

扩展:

以上代码是针对我当前项目配置的,以下是缩放移动同步的主要代码:

  1. myChart.on("georoam", function(params) {
  2. var option = myChart.getOption(); //获得option对象
  3. if (params.zoom != null && params.zoom != undefined) {
  4. //捕捉到缩放时
  5. option.geo[0].zoom = option.series[0].zoom; //下层geo的缩放等级跟着上层的geo一起改变
  6. option.geo[0].center = option.series[0].center; //下层的geo的中心位置随着上层geo一起改变
  7. } else {
  8. //捕捉到拖曳时
  9. option.geo[0].center = option.series[0].center; //下层的geo的中心位置随着上层geo一起改变
  10. }
  11. // myChart.dispatchAction({ //来用程序主动渲染选框
  12. // type: "restore",
  13. // });
  14. myChart.setOption(option); //设置option
  15. });

echarts配置项对应:

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Monodyee/article/detail/118789
推荐阅读