Jquery 单张及;Heatmap.js-无法执行';getImageData';在';CanvasRenderingContext2D';
我目前有一个工作传单地图,并希望在此基础上使用传单插件Heatmap.js 我使用的代码与上面链接中的示例非常相似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, "
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,这节省了我很多时间!谢谢这对我根本不起作用。我想你不能发布这个的代码吗?很遗憾,我手头已经没有代码了。但是,我已经用我采取的方法更新了答案。