Javascript 除非使用传单和heatmap.js更改缩放,否则画布不会重新绘制

Javascript 除非使用传单和heatmap.js更改缩放,否则画布不会重新绘制,javascript,canvas,leaflet,heatmap,Javascript,Canvas,Leaflet,Heatmap,我在使用插件的应用程序中有一个奇怪的错误,我不确定问题是在我的代码中,还是在插件中 我正在动态创建新的热图。所以我想删除旧的,然后跟踪新的,这应该是heatmpa.js的默认行为。令人惊讶的是,在我缩小或缩小之前,它不会删除旧的 以下是一些图片,以了解发生了什么: 第1步:点击按钮绘制巴黎热图: 结果:正如预期的那样,巴黎周围出现了热图 第2步:点击按钮绘制东部热图: 结果:第二张热图被添加,但巴黎周围的热图没有被删除。(错误) 第3步:单击加号图标缩放地图 结果:按预期缩放,巴黎周围的热图消

我在使用插件的应用程序中有一个奇怪的错误,我不确定问题是在我的代码中,还是在插件中

我正在动态创建新的热图。所以我想删除旧的,然后跟踪新的,这应该是heatmpa.js的默认行为。令人惊讶的是,在我缩小或缩小之前,它不会删除旧的

以下是一些图片,以了解发生了什么:

第1步:点击按钮绘制巴黎热图:

结果:正如预期的那样,巴黎周围出现了热图

第2步:点击按钮绘制东部热图: 结果:第二张热图被添加,但巴黎周围的热图没有被删除。(错误)

第3步:单击加号图标缩放地图 结果:按预期缩放,巴黎周围的热图消失

以下是setData函数热图手册的代码,它替换数据并调用重画:

 setData: function ( dataset )
 {
    var self = this;
    var latLngs = [];
    this._maxValue = 0;
    dataset.forEach( function ( d )
    {
        latLngs.push( new L.LatLng( d.lat, d.lon ) );
        self._maxValue = Math.max( self._maxValue, d.value );
    } );
    this._bounds = new L.LatLngBounds( latLngs );

    this._quad = new QuadTree( this._boundsToQuery( this._bounds ), false, 6, 6 );

    dataset.forEach( function ( d )
    {
        self._quad.insert( {
            x: d.lon,
            y: d.lat,
            value: d.value
        } );
    } );
    
    this.redraw();
   }
我的问题


如能就如何定位问题提供任何建议,我将不胜感激。解决方案会更好。

问题是插件的作者需要重置瓷砖层,然后更新它。我不清楚为什么重画功能在传单中没有这样做,我怀疑这可能是传单中的一个bug。我能够复制您的问题,您现在可以做的是自己重置和更新层。设置新数据后,只需执行以下操作:

heatmapLayer.setData(Your data);
heatmapLayer._reset();
heatmapLayer._update();