查询渲染层

问题描述 投票:0回答:1

我对网络编程和 mapbox-gl-js 很陌生,所以这可能是一个相当无聊的问题。

我正在寻找一种方法来检查地图上当前渲染的图层。我目前正在使用“queryRenderedFeatures”函数来查找所有渲染的特征,然后我过滤它们以获得单独的渲染层。我当前的实现如下所示:

self.ctx.map.on('moveend', () => {
    const features = self.ctx.map.queryRenderedFeatures({ layers: layerIDs , validation : false});
    if (features) {
        const uniqueFeatures = getUniqueFeatures(features, 'Associated_AP');
        renderListings(features);
    }
});

我使用这种方法的问题是,在我移动地图后,整个 Web 应用程序“停滞不前”,因为应用程序现在在地图上搜索多达 50000 个要素,然后再次过滤它们以找到各个渲染层。

还有其他方法可以提高我的申请速度吗?

检查地图上的活跃渲染层。我只想知道目前有多少层真正显示地图上的要素。我不在乎每层显示多少功能。一旦为该层找到一个特征,则不需要搜索相应层的其他特征。我需要这个,以便在需要时可以通过复选框打开或关闭图层。

mapbox mapbox-gl-js
1个回答
0
投票

如果我没理解错的话,你可能想要这样的东西:

const visibleLayers = layerIDs.filter(l => 
  self.ctx.map.queryRenderedFeatures({ layers: [l] }).length > 0)

不知道性能会不会更快

© www.soinside.com 2019 - 2024. All rights reserved.