QGIS2web生成OpenLayers地图报Cannot read properties of null如何解决
报错根因
你遇到的报错是因为map.forEachFeatureAtPixel的回调函数中,layer参数存在为null的情况——通常是你新增的绘制交互生成的临时图层,没有被qgis2web默认的图层逻辑纳入,当像素点命中的要素属于这类无关联layer的要素时,就会返回null,此时直接调用layer.get()就会触发空属性读取错误。
修复方案
只需要在原有判断逻辑最前面,增加layer非空校验即可,修改后的代码如下:
map.forEachFeatureAtPixel(pixel, function(feature, layer) { // 新增layer非空判断,空值直接跳过后续逻辑 if (!layer) return; if (feature instanceof ol.Feature && (layer.get("interactive") || layer.get("interactive") == undefined)) { var doPopup = false; // 此处也可补充fieldImages非空判断,避免后续潜在报错 const fieldImages = layer.get('fieldImages') || {}; for (k in fieldImages) { if (fieldImages[k] != "Hidden") { doPopup = true; } } // 后续原有逻辑全部保留即可
修改后空layer会直接跳过处理,不会再触发报错,也不会影响原有正常图层的交互逻辑,对现有绘制功能也无负面影响。
内容的提问来源于stack exchange,提问作者Geographos
相关产品推荐
相关产品推荐

