使用这段代码:
function displayPixelValue(event) {
const filteredLayers = map.getAllLayers().filter(function (layer) {
return layer.get('name');
});
for (let i=0; i<filteredLayers.length; i++) {
let reliefPattern = "_mbpd_";
if (filteredLayers[i].get('name').match(reliefPattern)) {
const reliefValue = filteredLayers[i].getData(event.pixel);
console.log(reliefValue);
}
}
}
map.on(['pointermove'], displayPixelValue);
我得到了想要的结果,但每次移动鼠标时都会有 15 个
float32array
输出(即查询 15 个 GeoTIFF 文件)(参见输出图像):
这个想法是保存所有结果(即鼠标移动后的输出),合并/连接它们并过滤掉除负数之外的任何结果(例如。
NaN
,255
),因此得到一个简单的列表以后可以用。不过,当只有一个 255
输出时,我可以用 reliefValue[0]
过滤 float32array
。
我一直在读到
float32array
只有.get
和.set
方法。因此,为了获得 arrays
,我使用了 Array.prototype.slice.call(myvariablehere)
,但问题又是它仅转换第一个。
非常感谢支持,
你可以用这个逻辑过滤数组
!isNaN(n) && n < 0
过滤掉
NaN
值和小于 0
的值。
例如,
[NaN, 255, -5365.85].filter((n) =>
!isNaN(n) && n < 0) // [-5365.85]