Jquery 单张及;Heatmap.js-无法执行';getImageData';在';CanvasRenderingContext2D';

Jquery 单张及;Heatmap.js-无法执行';getImageData';在';CanvasRenderingContext2D';,jquery,rendering,leaflet,heatmap,Jquery,Rendering,Leaflet,Heatmap,我目前有一个工作传单地图,并希望在此基础上使用传单插件Heatmap.js 我使用的代码与上面链接中的示例非常相似 var testData = { max: 8, data: [{lat: 24.6408, lng:46.7728, radius:500, count: 3}] }; var cfg = { "radius": 2, "

我目前有一个工作传单地图,并希望在此基础上使用传单插件Heatmap.js

我使用的代码与上面链接中的示例非常相似

 var testData = {
                max: 8,
                data: [{lat: 24.6408, lng:46.7728, radius:500, count: 3}]
            };


 var cfg = {
                "radius": 2,
                "maxOpacity": 8,
                "scaleRadius": true,                    
                "useLocalExtrema": true,
                latField: 'lat',                 
                lngField: 'lng',
                valueField: 'count'
            };

var heatmapLayer = new HeatmapOverlay(cfg);

map.addLayer(heatmapLayer);

heatmapLayer.setData(testData);
当我运行地图时,我看不到任何热图的迹象。然后,当我在地图周围平移时,控制台中出现以下错误:

未能对“CanvasRenderingContext2D”执行“getImageData”:源高度为0

你知道怎么解决这个问题吗?heatmap.js网站上的演示使用了几乎相同的代码,效果非常好

谢谢

编辑:

我已经找到了错误的根源。heatmap.js中的第316行是:

this._height = canvas.height = shadowCanvas.height = +(computed.height.replace(/px/,''));

高度将返回为零。但是,宽度设置正确

找到了解决办法。当我向地图添加热图图层时,地图还没有完全初始化。作为一个修复,现在我已经将map.addLayer(heatmapLayer)放在一个超时函数中,以确保映射完全加载

setTimeout(function(){
    map.addLayer(heatmapLayer);
},500)

如果还有其他人在寻找解决方案,我会通过实现

map.on('resize', function () {
            map.invalidateSize();
        })

在我的地图实例上。在我的例子中出现错误是因为屏幕分辨率动态变化。

是否设置了BaseLayer并将其添加到地图对象?初始化地图时,我为其提供了一个工作正常的图层。这就是你的意思吗?我没有在地图上设置任何BaseLayer属性;此外,您的容器是否设置了宽度和高度?是的,容器的高度和宽度为100%。正如我提到的那样,地图工作得很好,我能够添加标记、平移和缩放,没有任何问题。你有嵌套的div吗?我得到了运行的代码。我几乎只使用了HTML,这节省了我很多时间!谢谢这对我根本不起作用。我想你不能发布这个的代码吗?很遗憾,我手头已经没有代码了。但是,我已经用我采取的方法更新了答案。