簡體   English   中英

如何銷毀heatmap.js實例?

[英]How to destroy heatmap.js instance?

我正在使用patrick wied的heatmapjs 我想知道如何銷毀實例並刪除由h337.create(configObject)函數創建的canvas div。

例:

var config = {
  container: document.getElementById('heatmapContainer'),
  radius: 10
};
var config2 = {
  container: document.getElementById('heatmapContainer'),
  radius: 5
};
var heatmapInstance1 = h337.create(config);
var heatmapInstance2 = h337.create(config);
var heatmapInstance3 = h337.create(config2);

我想僅為heatmapInstance1實例銷毀和刪除canvas div。

目前沒有方法可以銷毀heatmapjs實例,但我們可以手動完成。

首先,我們必須從DOM刪除canvas元素,然后取消設置或銷毀heatmapjs實例。

例:

//find corresponding canvas element
var canvas = heatmapInstance1._renderer.canvas;
//remove the canvas from DOM
$(canvas).remove();
//than unset the variable
heatmapInstance1 = undefined;
//or
heatmapInstance1 = null;

如果您正在使用React組件,則在將新數據動態發送到熱圖組件時,可能必須在componentWillReceiveProps(newProps)中執行此操作。

this.heatmap._renderer.canvas.remove()
this.heatmap = Heatmap.create({container: ReactDOM.findDOMNode(this)})
this.setData(newProps.max, newProps.data);

您可以將此函數添加到CesiumHeatmap.js並使用它清除熱圖:

CHInstance.prototype.deleteLayer = function () {
    if (CesiumHeatmap.defaults.useEntitiesIfAvailable && this._cesium.entities) {
        if (this._layer) {
            this._cesium.entities.remove(this._layer);
        }
    } else {
        if (this._layer) {
            this._cesium.scene.imageryLayers.remove(this._layer);
        }
    }
};

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM