plainheart / echarts-extension-amap

🚩 An AMap (https://lbs.amap.com) extension for Apache ECharts (https://github.com/apache/echarts)
https://github.com/plainheart/echarts-extension-amap
MIT License
251 stars 83 forks source link

示例文件里,置空 series 无法清除数据 #10

Closed benleilei closed 3 years ago

benleilei commented 4 years ago

在示例文件 index_zh_CN.html 末尾添加代码

setTimeout(function() {
    const opts = echarts.util.clone(option)
    opts.series = []
    chart.setOption(opts);
}, 3000)

无法清除地图上的点(echarts 官网中使用 bmap 是可以的) 只能通过

setTimeout(function() {
    const opts = echarts.util.clone(option)
    opts.series.forEach(s => {
        s.data = []
    })
    chart.setOption(opts);
}, 3000)

方式清除,这应该是一个 BUG

plainheart commented 4 years ago

@benleilei 感谢反馈,但我认为这个是 ECharts 的bug,默认如果不指定 notMergetrue,会采用合并的方式,所以 seriesdata 并不会被覆盖,也就是说只能通过遍历的方式把各个 seriesdata 置空。 这个问题会在接下来的 5.0 版本中得到优化。

benleilei commented 4 years ago

可能我描述的有问题,问题不是在于 const opts = echarts.util.clone(option) 语句,即使写成 const opts = { xxxx, series: [] } 即我重写一个新的 JSON 对象,还是无法清除绘制到地图上的点。

setTimeout(function() {
    const opts = {
        amap: {
            viewMode: '3D',
            center: [108.39, 39.9],
            zoom: 4,
            resizeEnable: true,
            renderOnMoving: true,
            mapStyle:'amap://styles/dark'
        },
        tooltip : {
            trigger: 'item'
        },
        animation: true,
        series: []
    }
    chart.setOption(opts);
}, 3000);

我关注的点在于:series 被清空后,再次赋值,原先内容还是存在。 但是,使用 bmap 完全没有此问题

plainheart commented 4 years ago

需要手动将 series 中的 data 置空才可以,series: [] 不行,除非指定 notMergetrue。 bmap没有此问题?能否提供一个例子?

plainheart commented 4 years ago

@benleilei 这是官网的bmap例子,如我上边所说的原因,也存在同样问题。 https://gallery.echartsjs.com/editor.html?c=xFt3nuTGd0&v=1 想要清空有两种办法,一个是你所说的遍历,另一个就是指定 notMergetrue,像这样:myChart.setOption(opts, true); 或者在 setOption 之前先调用 chart.clear()