echarts 画中国地图出现effectScatter标注点,但是由于点太密集,坐标太多,客户想实现地图一样根据缩放显示不同数据。
框架: UMI/React Hooks echarts版本:4.9.0 react-for-echarts
<ReactEcharts
option={option}
ref={instance}
onEvents={{
georoam: georoam,
}}
style={{
height: '100%',
width: '100%',
overflow: 'hidden',
paddingLeft: '2.2rem',
}}
/>
const georoam = (params) => {
if (Reflect.has(params, "dx")) return; //如果是拖拽事件则退出
setZoom(instance.current.getEchartsInstance().getOption().geo[0].zoom)
const newZoom = Math.floor(instance.current.getEchartsInstance().getOption().geo[0].zoom)
//根据新的缩放,从新获取数据
ctrolData(newZoom)
};
这样基本满足了缩放,显示数据层次。但是又有了新问题,拖动的时候数据刷新了echarts每次都会从新居中。
echarts geo 有一个center属性,中国地图不设置默认居中。
所以需要动态捕获当前最后移动位置,刷新数据之后再重置这个属性。
<ReactEcharts
option={option}
ref={instance}
onEvents={{
georoam: georoam,
mousemove:mousemoveHandle
}}
style={{
height: '100%',
width: '100%',
overflow: 'hidden',
paddingLeft: '2.2rem',
}}
/>
const mousemoveHandle = (params)=>{
center = instance.current.getEchartsInstance().getOption().geo[0].center
}
并不是所有的状态都需要实时的去要界面响应。