Mapbox GL JS - 过滤标记的分析

Mapbox GL JS - Analysis of Filtered Markers

我是 Mapbox GL JS 的新手,我很喜欢它!在过滤 GeoJson 源上的标记时,我已经 运行 了解了一些事情,我想知道是否有人可以帮助我...这是我的过滤逻辑示例:

    function applyFilters() {
        var filters = ["all", ["==", "$type", "Point"]];

        if (document.getElementById('filter1checkbox').checked)
            filters.push(['==', 'property1', true]);
        if (document.getElementById('filter2checkbox').checked)
            filters.push(['==', 'property2', true]);

        map.setFilter('markers', filters);
        var llb = new mapboxgl.LngLatBounds(geojsonExtent(markers));
        map.fitBounds(llb);
        map.setCenter(llb.getCenter());
    }

这是我的问题:

  1. 应用我的过滤器后,有没有办法获取与过滤器匹配的标记的数量(您的搜索返回了 {X} 项)?
  2. 当我使用 geojsonExtent 获取标记集合的边界时,它似乎没有考虑过滤器。有没有办法获取过滤器后面的数据以传递到 geojsonExtent?

关于去哪里购买这些物品有什么建议吗?

Once my filter is applied, is there a way to get a count of markers that matched the filter (Your search returned {X} items)?

您可以通过 运行

获取视口中当前可见的过滤标记数
map.queryRenderedFeatures({layers: ['markers']).length

无法获取整个地图中筛选标记的总数。

When I use geojsonExtent to get the bounds of the marker collection, it doesn't seem to be taking the filter into account. Is there a way to get at the data behind the filter to pass into geojsonExtent?

您也可以使用 queryRenderedFeatures! (注意:此代码未经测试)

geojsonExtent({
  type: 'FeatureCollection',
  features: map.queryRenderedFeatures({layers: ['markers']).length
});