[apache/echarts]echarts bmap当在地图标点时,每隔30秒就刷新一次数据引发地图重新渲染

2024-07-16 208 views
8

问题: charts与百度地图共同使用,当程序像echats传输动态更新数据的时候(每隔30秒传一次,甚至是更短时间),当数据更新了,地图也会更新,而且加载时会有空白显示,如果间隔时间更短的话,基本上地图是一直闪烁的状态。 解决的问题: 1.当数据变化,但是地图没有变动的时候,可以避免重复渲染,提升运行效率 2.更好的体验效果,因为主要是看地图上的数据,而不是地图本身,所以当地图始终是渲染同一个地方时或者是固定只显示一个地方时,只刷新数据而不刷新地图是很有必要的,因为地图重新加载会使屏幕先变白,然后开始加载,对于深色主题的展示非常不友好 3.提升运行效率,因为echarts如果变多或者是数据量非常大的时候,就会出现卡顿问题,重复的东西不渲染,那么可以大大的提升效率

只是想问问怎么能实现上面的内容,因为怎么查都查不到,实际业务还需要

回答

8

可以提供一个例子方便复现一下吗?

1

我想复现,不过实在是操作不明白,因为我现在做的工具是不对外的,我给你提供下数据吧。 网址:https://gallery.echartsjs.com/editor.html?c=effectScatter-bmap 数据:附件 数据.txt 将附件中的数据复制到里面,然后点击工具的刷新,就会出现先是一白,然后在加载地图的效果, 想实现的就是,数据重新加载,但是地图还是原先的样子

2

你点击工具的刷新,那个是整个iframe刷新,相当于页面重载了,空白是正常的。你说的应该是通过setOption更新数据的时候也会出现地图被重载吧?

8

对的,我现在发两个图你看下,实例就是用了setOption的,而实例2就是效果图 实例 实例2

0

现在我这要实现的是每隔2-3秒就要刷新一次,因为做的是医疗项目,要保持数据的实时性

4

可能跟之前的一些逻辑有关,前些天因为拖动缩放ECharts会一直触发百度地图的moveend事件提交了一个PR,刚测试了下似乎不存在这个问题,因PR还未合并,故在当前最新发布的版本中问题还存在。 你可以尝试将 #12558 的相关改动合入最新代码,重新打包一份,在你的项目里再试试是否会出现同样问题。

8

另外注意 刷新的时候 optionbmapcenterzoom 也要同时修改为当前百度地图的 centerzoom 不然又会回到初始中心点了 可能会导致平移刷新。

2

我点前的center和zoom就是bmap的,但是刷新的时候也会重新渲染界面,我给你的网址上也是如此,只要重新调用setOption()这个方法就会重新渲染百度地图,

4

有试过我上边说的方法吗?

2

我试过了,不行,我正在下载最新的echarts

8

这是需要合入代码之后 重新构建bmap.min.js的。我这里贴一份我编译后的代码 你可以尝试下。(txt改为js) bmap.min.txt

我这里测试是不出现重载的问题的。