避免在非现有图层上出错queryRenderedFeatures

时间:2016-12-21 12:46:10

标签: mapbox-gl-js

我已将应用程序升级到mapbox-gl-js的最后一个版本,但它已经破坏了它。

queryRenderedFeatures已更改,现在它在非现有图层上出错。

由于多种原因,我们无法预测此时将存在哪些层(一些是动态构建的)。

有没有办法解决这种问题?

基本上我们希望能够执行以下操作(其中一个图层没有)并且仍然可以得到结果。

THX, JM

features = map.queryRenderedFeatures([{
    x: x1,
    y: y1
}, {
    x: x2,
    y: y2
}], {
    layers: [
        'Layer A',
        'Possibly non existing Layer B',
        'Layer C'
    ]
});

1 个答案:

答案 0 :(得分:1)

您可以过滤掉不存在的图层:

features = map.queryRenderedFeatures(
    [{x: x1, y: y1}, {x: x2, y: y2}], 
    {layers: 
       ['Layer A', 'Possibly non existing Layer B', 'Layer C']
       .filter((layer)=>{map.getLayer(layer)})]
});

应该避免触发错误

https://jsfiddle.net/o8fLvh7e/