0

我是 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?

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

4

1 回答 1

0

应用我的过滤器后,有没有办法获取与过滤器匹配的标记计数(您的搜索返回 {X} 个项目)?

您可以通过运行获取当前在视口中可见的过滤标记的数量

map.queryRenderedFeatures({layers: ['markers']).length

无法获得整个地图中过滤标记的总数。

当我使用 geojsonExtent 来获取标记集合的边界时,它似乎没有考虑到过滤器。有没有办法获取过滤器后面的数据以传递给geojsonExtent?

你也可以用queryRenderedFeatures这个!(注意:此代码未经测试)

geojsonExtent({
  type: 'FeatureCollection',
  features: map.queryRenderedFeatures({layers: ['markers']).length
});
于 2016-05-11T22:14:16.443 回答